Documentation Layout
foobar
foo at bar.com
Thu Mar 29 02:24:47 PDT 2012
On Thursday, 29 March 2012 at 01:52:28 UTC, James Miller wrote:
> On 29 March 2012 13:58, Nathan M. Swan <nathanmswan at gmail.com>
> wrote:
>> On Wednesday, 28 March 2012 at 22:43:19 UTC, foobar wrote:
>>>
>>> Categories - worst idea ever.
>>>
>>> What's better:
>>> int a; // this is size
>>> OR
>>> int size;
>>>
>>> Same thing applies here - code MUST be self documenting as
>>> much as
>>> possible.
>>
>>
>> But categories are still useful, e.g., when you want a
>> function in
>> std.algorithm that looks for a specific element. It could be
>> "search" or
>> "find" or "firstElemSatisfyingCondition", and even though
>> those are all self
>> documenting, it would be a pain to look through the list of
>> functions in
>> alphabetical order. The use of categories narrows your search
>> for the
>> function down 20%.
>>
>> NMS
>
> Exactly my point. There is a line between "code must be self
> documenting" and "I need to read the code to understand what
> this
> does". Self documenting code is more about removing the
> cognitive
> stress of reading code. Actual documentation needs the whys and
> wherefores about everything.
>
> std.string is a brilliant example, with a list of 68 functions
> at the
> top, and a total of 89 anchors (presumably just overloads),
> there is
> no easy way to quickly find a function for a purpose. You have
> indexOf
> - a searching function - next to insert - a manipulation
> function -
> next to isNumeric - a property testing function. Each of those
> functions are "self-documenting" but that doesn't mean they
> wouldn't
> benefit from categorization.
>
> --
> James Miller
Have you considered that perhaps the granularity of Phobos
modules is too coarse? Perhaps the core issue is too many
functions are placed in one single file without more
consideration of their relation and organization?
Regarding the documentation system itself - it should provide as
much automation as possible. For instance, it should be able to
group overloads together, it should be able to group kinds
together - types, free functions, enums, etc. it should be able
to group together various parts of a compound type (by
protection, by kind: constructors, properties, operators, etc. )
Given the above *and* proper organization of code - which is
*not* the case today - an *optional* tagging system could add
some small benefit if it's automatic. E.g add a TAG macro.
Relying on documentation before exhausting the above is IMHO
wrong.
As others said, the documentation and code comments should
reflect what the code itself cannot express - what is the higher
goal we want to achieve, which specific implementation tradeoffs
were taken and why, etc.
breaking algorithm.d into manually maintained documentation
"categories" clearly misses the above points.
More information about the Digitalmars-d
mailing list