混合getter /setter和普通变量

Mixing getters/setters and normal variables

本文关键字:变量 setter getter 混合      更新时间:2023-10-16

我正在编写一个C库的c++包装器,因此,需要使用getter/setter方法来调用原始的C函数。

class View {
public:
    GR_COLOR getBackgroundColor();
    void setBackgroundColor(GR_COLOR color);
    GR_COLOR getBorderColor();
    void setBorderColor(GR_COLOR color);
};

像这样将这种风格与普通变量混合在一起是否被认为是不好的?

class View {
public:
    GR_COLOR getBackgroundColor();
    void setBackgroundColor(GR_COLOR color);
    GR_COLOR getBorderColor();
    void setBorderColor(GR_COLOR color);
    int someOtherVariable;
};

如果您为所有变量定义getter和setter,并将这些变量设为私有,那么将来对代码的更改将容易得多。这是OOP中getter/setter背后的原则之一。人们不会直接访问你的成员,你也不必担心他们如何使用它,因为你可以通过getter和setter来控制他们如何被使用。

它也将与库的其余部分保持一致。

然而,最终,这取决于你。如果我是你,我肯定会使用getter和setter

对某些变量使用getter和setter而对其他变量不使用,这并不被认为是糟糕的风格。但是,添加getter和setter ,然后为其他变量设置私有变量,将保护类的用户免受将来对类内部的更改。

我认为这是一种糟糕的风格。为什么不让你所有的变量私有,并有公共getter/setter每个?它更啰嗦,但(我认为)更符合OOP风格。

我个人并不认为这是件坏事。然而,当我看到类似的东西时,我通常认为setter提供了更多的处理和功能,而不仅仅是设置变量的值。ie。也许setBorderColor将设置保存颜色的变量并更新UI,而一个公共变量,比如updateDelay用于更新UI上的一些动态事物的计时器(我不知道,当场想不出任何东西),不需要任何额外的处理。