On Tuesday, 13 March 2018 at 06:03:11 UTC, Mike Parker wrote:
I think it's a great feature and I use it frequently. It's allows more flexibility in class design. Without it, we'd need another protection attribute to enable the concept of "private to the module".

That's kind of my point. That's what I would have done, if for no other reason, to prevent the same syntax from having different semantics (when C++/C#/Java programmers come over to D).

And I switch between them all, and now, I have to remember D's private memeber is something very different indeed.

In Java, it's recommended to manipulate private member variables through their accessors even in methods of the same class. I've always found that extreme.

Java is extreme in many ways ;-)

but at least, private member, is still a private member (to the class).

If my private class memeber can be directly modified outside of the class, then class encapsulation IS broken. Just saying, oh no, it's module encapsulation you should be thinking about, seems kinda strange, since we still use classes - which are their own level of encapsulation. That's the whole point of them.


Reply via email to