When doing delegation I have a documentation dilemma: do the API docs go in
the delegator or the delegate?

In this case it's Test::Builder2::TestCase which delegates to a stack of
Test::Builder2::EventCoordinator objects.  The user will primarily interact
with TestCase objects.  Only rarely should they ever touch an EventCoordinator
directly.

Do I put all the documentation in TestCase, because that's what the user will
work with, and put a pointer to EventCoordinator?

This presents a unified interface to the user... but it's harder to maintain.
 And if you DO need to use an EventCoordinator it's harder to know which
methods are EC's and which are TestCase's.

Do I document their native methods in their respective classes and point the
TestCase docs at EventCoordinator?

It's inconvenient to the user to have to jump between two class's
documentation to learn how to use one class.  But it is easier to maintain.
It also conveys the true nature of things presenting a more accurate model
(not necessarily more useful).

Meanwhile, I'm going with documenting in place.  It's easier while the API is
evolving.

Hmmm... sectional POD includes anyone?


-- 
Look at me talking when there's science to do.
When I look out there it makes me glad I'm not you.
I've experiments to be run.
There is research to be done
On the people who are still alive.
    -- Jonathan Coulton, "Still Alive"

Reply via email to