AJ wrote:
"Walter Bright" <[email protected]> wrote in message
news:[email protected]...
AJ wrote:
You lose the ability to use, say a class declaration, as the
specification (at least without a sophisitcated,
code-folding/code-formatting IDE).
Just change "class" to "interface" and you're good to go.
Seems "apples and oranges" to me. "class declaration" can have data members
while "interface" can't.
It's usually considered good style to keep your data members hidden from
users. Interfaces do that nicely.
I mean, "my concept of it". I don't know what
definitions D has of those things. In C++, I use interfaces where
appropriate (say, where usage outside of a given library/subsystem is
anticipated/desired), but for most purposes (say, within a given
library/subsystem), I want a full class declaration (with data members etc).
When I think "interface", I think "pure abstract base class" and is
something strictly behavioral. When thinking "class" or "struct", I think
first of the data members, something more nominal ("noun-ish").
If you're exposing data members to all the users, then you might as well
expose the function bodies, too, because the benefits of hiding the
implementation are already mostly gone.