C++运算符setter ruby样式



为什么人们不这样编码?Ruby风格!

#include <stdio.h>
class Name {
    public:
        void operator=(char *to) {
            name = to;
            printf("Change!n");
        }
    private:
        char *name;
};
class Human {
    public:
        //char *name;
        Name name;
};
int main() {
    Human andreas = Human();
    andreas.name = "Andreas";
    printf("%sn", andreas.name);
}

使用公共成员函数,直到您需要向setter添加一些内容为止。然后将其切换为运算符为的类。

使用公共成员函数,直到您需要向setter添加一些内容为止。然后将其切换为运算符为的类。

因为当你需要更改代码时,你的项目已经增长了一百倍,现在你需要在很多不同的地方更改代码——甚至在其他项目中,如果你要运送一个库的话。

换句话说,你破坏了代码很多代码。

即使你现在不写库,你也有可能在更通用的环境中重用一些代码。不要指望每一段代码都将保持本地使用。

除此之外,为setter提供一个简单的语法根本没有什么大的动机,因为setter实际上很少被需要。现代C++力求最大限度地减少对已创建对象的更改。这样可以更容易地推断对象的状态,从而推断程序的总体状态。这反过来又降低了复杂性、错误和维护。

这样的开关会破坏接口,这是您通常想要避免的。

最新更新