【发布时间】:2014-07-22 14:38:41
【问题描述】:
首选的 C++ 风格是什么,使用 get 和 set 函数来获取和设置成员变量的值,或者只是将成员变量公开?
class MyClass
{
public:
std::string getValue();
std::string setValue();
private:
std::string value;
};
对
class MyClass
{
public:
std::string value;
};
第二个看起来更干净,我真的看不出比第一个有什么好处,除了如果你通过代码行获得报酬可以让你多一点钱。
【问题讨论】:
-
第一个不允许修改。
-
第一种方法的优点是它不会暴露对象的(可变)实现和私有状态。
-
如果我想进行更改,我还可以包含一个
std::string setValue();函数。我应该澄清一下。 -
如果它提供了getter和setter,你必须问这个类在抽象什么。
-
两者都不好。您应该考虑您的业务模型并相应地编写您的方法,而不是制作 getter 和 setter。使用
get()和set(),你最终会在你的代码库中散布很多像setA(getA()+1)这样的代码。
标签: c++ coding-style