混合getter / setter和普通变量

时间:2011-10-23 06:39:49

标签: c++ getter-setter

我正在围绕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;
};

4 个答案:

答案 0 :(得分:3)

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

它也与你图书馆的其他部分保持一致。

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

我会认为它有些不好的风格。为什么不将所有变量设为私有并为每个变量设置公共getter / setter?它更冗长,但它(我认为)更符合OOP风格。

答案 3 :(得分:0)

我个人认为它根本不是坏事。但是,当我看到类似的东西时,我通常认为setter提供的处理和功能比设置变量值更多。即。也许 setBorderColor 将设置保持颜色的变量并更新UI,而公共变量,例如 updateDelay 用于计时器,用于更新UI上的某些动态内容(I不知道什么都不能当场思考),不需要任何额外的处理。