No header files?
Steven Schveighoffer
schveiguy at yahoo.com
Wed Oct 21 20:35:18 PDT 2009
On Wed, 21 Oct 2009 23:10:38 -0400, AJ <aj at nospam.net> wrote:
>
> "Steven Schveighoffer" <schveiguy at yahoo.com> wrote in message
> news:op.u16j03t2eav7ka at localhost.localdomain...
>> On Wed, 21 Oct 2009 19:31:02 -0400, AJ <aj at nospam.net> wrote:
>>
>>>
>>> "Steven Schveighoffer" <schveiguy at yahoo.com> wrote in message
>>> news:op.u15929x0eav7ka at localhost.localdomain...
>>>
>>>> What happens (and being a long-time C++ developer, I've had my fair
>>>> share
>>>> of experience with it) is that the interface gets out of sync with
>>>> the
>>>> implementation, so weird shit happens.
>>>>
>>>> I even think d's "editable" interface files are suspect. They can be
>>>> out
>>>> of sync with the object files, and then you have the same problem.
>>>> The
>>>> best model by far is Java and C# where the object files *are* the
>>>> interface files. Then you only have to worry about documentation
>>>> being
>>>> out of sync. But at least your programs don't crash randomly for no
>>>> reason because the docs are invalid.
>>>>
>>>> What I would suggest is creating stub functions via {} and then when
>>>> you
>>>> go back to fill in the interface, fill in the {} area. You get the
>>>> same
>>>> effect.
>>>
>>> You lose the ability to use, say a class declaration, as the
>>> specification
>>> (at least without a sophisitcated, code-folding/code-formatting IDE).
>>
>> What do you use, Notepad? Even vi does this now.
>
> Oh, can you print that out for me so I can look it over on the train ride
> into work?
Sure. But I just prefer to use my laptop when traveling.
>
> And you know that code folding of an implementation file cannot encompass
> the elements of hand-written header file.
You mean format styles? Yeah, I guess, but generally the formatting of a
doc generator is customizable to your liking, so you don't have to deal
with another person's style if you are reading a header you didn't write.
> But that's just my preference (to use header files). To
> each, their own.
Indeed.
>
>>
>> In any case, I seldom refer to the source file when I can just look at
>> the
>> docs generated from the comments. If you aren't commenting your API,
>> then
>> I'm not using your lib, so don't even suggest that header files *without
>> comments* are better than auto-generated docs.
>
> I never suggested that header files not have comments. But I was saying
> that
> I use header files as the "answer book" in using code (aka,
> "documentation")
> and also that header files can eliminate the need for auxiliary
> documentation.
With source and headers, you have 2 pieces. With source and docs, you
have 2 pieces. Why would documentation be considered any more auxiliary
than header files? And a generated doc is just a different view of the
same data, so it's more likely to be correct.
> Good thing for me that the IDEs open header files with a few
> clicks on the #include <myhdr.h> line huh. A header file is the real
> thing,
> while auxiliary documentation describes the real thing. Software isn't
> built
> with documentation. It's built with source code. Blueprints, not a
> brochure.
I look at headers and source as 2 blueprints, of which one or both might
not be correct, so there is more chance for error. More places to
maintain the exact same thing means more overhead, more
And suggesting auto-generated docs are any different than a header file is
completely false. The exact function signatures are copied from the
actual source, how is that a brochure?
>
>> Header files with comments are trivially transformed into
>> auto-generated
>> docs (one-liner).
>
> Why would I want to do that (generate more artifacts) when it's
> unnecessary?
> I use header files. I find much value in them and see no reason to stop
> using them (yes, even after the discussion in this thread and even with
> D).
Again, header files are an artifact, auto-generated docs are an artifact.
If you have docs, you don't need headers, so your notion that more
artifacts are required is false. It takes me 1 second to generate the
docs (in fact, it takes me no time, since I have a svn trigger setup to
generate them), how long does it take you to update your header file when
you want to update a function/class? Don't you ever get tired of writing
every function signature twice?
Have you ever used generated docs? You might be surprised at how good
they are.
-Steve
More information about the Digitalmars-d
mailing list