Feedback on Átila's Vision for D

Aliak something at something.com
Sat Oct 19 13:45:37 UTC 2019


On Saturday, 19 October 2019 at 12:23:36 UTC, Nicholas Wilson 
wrote:
> 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).

Solution a is a convention. And solution b is fluffy. Neither are 
enforceable. But they are indeed things you can do to try and 
mitigate things. And it becomes exponentially harder to enforce 
conventional practices the bigger the code base. Unfortunately 
that’s only something you get to realize after enough experience 
in big code bases and in larger teams.



More information about the Digitalmars-d mailing list