Module-level visibility

retard re at tard.com.invalid
Tue Feb 16 07:23:17 PST 2010


Mon, 15 Feb 2010 15:48:49 -0800, Ali Çehreli wrote:

> bearophile wrote:
>> 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. So I suggest Walter to ask other people, maybe
>> at Google or else (and in this newsgroup too), if they think this
>> feature of D2 is a good thing, before this feature is set in stone in
>> D2 (I have no definite answer about this topic, I can't help you). If
>> you are really sure this is a good feature, then you can ignore this
>> post.
>> 
>> Bye,
>> bearophile
> 
> I don't have much experience with D, but I think this feature is useful.
> It solves the problem of giving access rights to a select few, in
> addition to the class itself.
> 
> In C++, it is sometimes sought to allow some classes to have more rights
> than the general public. For example, let the public have read access to
> certain features, but let some classes have write access.
> 
> In D, that select few is the module by default, and may be extended to
> the package.

In languages like Java/C#/Scala, there is no friend attribute. Still 
major applications can be built. According to some OOP principles 
accessing the internal state is often a design error. There might be some 
efficiency issues, but other than that, I guess the large number of Java/
C# programs clearly shows that 'friendship' is not a critical feature. 
IMHO the implicit friendship feature inside the same module causes more 
problems than advantages also in D.



More information about the Digitalmars-d mailing list