Do non-member functions improve encapsulation in D?
Lars T. Kyllingstad via Digitalmars-d
digitalmars-d at puremagic.com
Mon Apr 21 01:49:13 PDT 2014
On Sunday, 20 April 2014 at 20:36:58 UTC, Andrei Alexandrescu
wrote:
> On 4/20/14, 12:11 AM, Lars T. Kyllingstad wrote:
>> The fact that "private" really means "module private" in D
>> means that
>> any number of functions can break when a class/struct
>> implementation
>> changes.
>
> No, only those in that module. There's no change. -- Andrei
Ok, so "any number" was poorly phrased. What I meant was "a
large number", because in my experience, modules tend to be quite
large. Specifically, they are rarely limited to containing just
a single class. They often contain multiple classes, along with
most related functionality. In principle, changing the
implementation of one class can break the implementation of
another class! Now, you may argue that kitchen sink modules are
poor programming style, but it seems to be a common style, with
Phobos being a very prominent example. :)
I often wish "private" meant class private in D. I know, the
usual argument against this is that someone who writes a module
usually has full control of that module, but again, Phobos is an
example of the contrary. Each module has at least a dozen
authors, even if they aren't all listed in the documentation.
I also know it's never going to happen due to the amount of code
breakage it would cause. But maybe we could extend the syntax a
bit? E.g. "private(class)" or "class private"?
More information about the Digitalmars-d
mailing list