繁体   English   中英

混合getter / setter和常规变量

[英]Mixing getters/setters and normal variables

我正在围绕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方法,然后将您的变量设为其他变量的私有变量,可以保护您的班级用户免于将来对班级内部的更改。

我认为这有点不好。 为什么不将所有变量都设为私有,并为每个变量设置公共获取器/设置器? 它比较冗长,但(我认为)更符合OOP风格。

我个人并不认为这很糟糕。 但是,当我看到类似的东西时,我通常认为设置器提供的不仅仅是处理设置变量的值,而是提供更多的处理和功能。 即。 也许setBorderColor将设置保留颜色的变量并更新UI,而一个公共变量(例如updateDelay)用于计时器中以更新UI上的某些动态内容(我不知道当场想不起来) ,不需要任何额外的处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM