On Tuesday, 13 March 2018 at 08:44:48 UTC, Mike Parker wrote:


Any new keywords, or reuse of existing keywords, does make the language more complex. Everything that is added must have a reason. Private is module level because friend is so common in C++, i.e. people find it useful and it would be great to support something similar in D. Making modules the lowest level of encapsulation does that without the need for an extra keyword for friends while still maintaining a strict border between external and internal APIs. Moreover, it restricts friends to the same module, easing the maintenance burden and decreasing the chance of error. It was a great decision.

yeah, I probably agree that it's a good decision, when the module is the boundary.
(aka so-called 'principled' violation of encapsulation)

what I don't like, is that I have no way at all to protect members of my class, from things in the module, without moving that class out of that module.

D wants me to completely trust the module, no matter what.

That's make a little uncomfortable, given how long and complex modules can easily become(and aleady are)

Reply via email to