No header files?
AJ
aj at nospam.net
Wed Oct 21 16:31:02 PDT 2009
"Steven Schveighoffer" <schveiguy at yahoo.com> wrote in message
news:op.u15929x0eav7ka at localhost.localdomain...
> On Wed, 21 Oct 2009 18:16:48 -0400, AJ <aj at nospam.net> wrote:
>
>>
>> "Steven Schveighoffer" <schveiguy at yahoo.com> wrote in message
>> news:op.u157hfkveav7ka at localhost.localdomain...
>>> On Wed, 21 Oct 2009 17:59:52 -0400, AJ <aj at nospam.net> wrote:
>>>
>>>> Since D has no header files, how does one create "a library" that
>>>> another
>>>> developer can use without exposing the implementation?
>>>
>>> try dmd -H.
>>>
>>> .di files are D header files, basically used for the reason you specify.
>>
>> OK, so header files can be generated. The thing is though, when I am
>> designing at the code level, I start with the declarations (such as class
>> data members and methods) and do the implementation (or one can hand it
>> off
>> to someone else) afterwards. That serves as the "blue print" for further
>> development and remains as first level of documentation as well. Working
>> with just "implementation files" seems to be putting the cart before the
>> horse. While eliminating something unnecessary is something to strive
>> for, I
>> don't think header files are unnecessary in the development process
>> (i.e., I
>> don't think that relegating them to just the situation given with my OP
>> is
>> good, exactly for the reasons of usefullness I gave).
>
> Separating interface from implementation is good -- but not if you have to
> repeat the interface (as you do with C++ or C).
I wouldn't use the term "interface" in this context for it has other meaning
in OO.
> 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).
More information about the Digitalmars-d
mailing list