Module-level visibility

Bob Jones me at not.com
Tue Feb 16 10:49:34 PST 2010


"bearophile" <bearophileHUGS at lycos.com> wrote in message 
news:hlcl4c$2ack$1 at digitalmars.com...
>I have shown this little program to some of my friends that program in 
>Java/C#:
>
> class Foo {
>    private int x;
> }
> void main() {
>    Foo f = new Foo;
>    f.x = 5;
> }
>
>
> When I say them this code compiles with D2 they usually tell me that the 
> compiler has a bug.

There's probably a whole bunch of features you could do the same with. 2 
public classes in one file for example.

FWIW Delphi has the same 'module' (unit in Delphi speak) level visibility. 
And in 10 years of using it I've never had a problem with it. There needs to 
be some way to make some features visible between interdependant classes or 
else you end up having to make things public that only needed to be public 
to a few classes. It would reduce encapsulation in a bad way because you end 
up having to expose things to users of the module or library that they dont 
need to see. Because it's either visible to everyone or visible to no-one.

So anyone who recoils at such a feature does so for ideological reasons not 
from experience in my opninion.

But really whats needed is 'class private' and 'module private'. Then the 
idealists and the pragmatists will both be happy. :-)





More information about the Digitalmars-d mailing list