On Saturday, 12 May 2018 at 18:36:59 UTC, Walter Bright wrote:
On 5/12/2018 9:42 AM, Mike Parker wrote:
Thank goodness we don't have to do this silliness.

I always thought the 'friend' business in C++ was an awful hack. But C++ didn't have modules, and modules are a much better solution to that problem.

Modules would only be a better solution, if, and only if, the programmer still had control over class level encapsulation.

At least 'friend' in c++, is in the control of the programmer.

D has decided the programmer doesn't need this control anymore, takes that control away, and gives it to the module - the programmer has no say in it - even if the programmer want's it private, the module overrides private!!

I would expect, that like me, 10's of millions of other programmers would not be comfortable with this.

That the '< 1000' D programmers think otherwise, doesn't make the case.

Go back and give the programmer control, as to whether the class or the module has the greater authority, and perhaps...then... D will attract more programmers.

Feel free to show the code below, to all the C#/C++/Java programmers out there - I'm sure they'll love what D has done with the class-module interaction.

================================
module test;

import std.stdio : writeln;

void main()
{
    Person p = new Person("King Joffrey");

writeln(p.getName); // I designed my class to present this interface. writeln(p._name); // The module couldn't care less about your interface.

p._name = "King Walter"; // even worse, the module can de-throne the king!!
    writeln(p._name);
}

class Person
{
    private string _name;

    public void setName(string name)
    {
        this._name = name;
    }

    public string getName()
    {
        return ProperName(this._name);
    }

    public this(string name)
    {
        _name = name;
    }

    private static string ProperName(string name)
    {
        return name ~ " : The one true king!";
    }
}

===========================================

Reply via email to