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.

Reply via email to