Feedback on Átila's Vision for D

Nicholas Wilson iamthewilsonator at hotmail.com
Sat Oct 19 12:23:36 UTC 2019


On Saturday, 19 October 2019 at 11:46:21 UTC, drug wrote:
> I agree that in D having private to be in fact moduleprivate is 
> unusual comparing to C++ for example.

In C++ you have no modules (modulo recent activity) and so the 
class is the only unit of encapsulation that there is apart from 
namespaces. In Java there you can only have a single class per 
module so module private and class private are the same thing 
(possibly modulo inner classes? idk I don't Java).

In D you can't not use modules _and_ you can have multiple 
declarations per module _and_ there is only one private (and no 
friend, or alternately everything in the modules are friends) so 
the line has to be drawn somewhere.

> But is it really bad in practice?

IME, no. If your module is big enough that you can't keep all of 
it in you head and you start calling implementation details of 
your classes _by accident_ then either:
a) name your implementation details so they stand out so you 
don't call by accident (e.g. a._something() )
b) split up your module into a package so that it fits in your 
head, this will (probably) cause you to not be able to call the 
implementation details at all, and will thus cause you to have to 
think about the organisation of you package (which is probably a 
good thing).



More information about the Digitalmars-d mailing list