考虑下面的类:
class A
{
A();
int number;
void setNumber(int number);
};
您可以通过 3 种方式实现“setNumber”:
Method 1:使用“this”指针。
void A::setNumber(int number)
{
this->number = number;
}
Method 2:使用范围解析运算符。
void A::setNumber(int number)
{
A::number = number;
}
Method 3:相反,用“m”或“_”表示所有成员变量(这是我的首选方法)。
void A::setNumber(int number)
{
mNumber = number;
}
这只是个人喜好,还是选择特定方法有好处?
这主要是个人偏好,但让我从一家同时制作许多小游戏的公司内部分享我对这个问题的看法(因此我周围使用了许多编码风格)。
此链接有几个很好的相关答案:为什么在 C++ 类中的成员变量上使用前缀 https://stackoverflow.com/questions/1228161/why-use-prefixes-on-member-variables-in-c-classes
您的选择1:
void A::setNumber(int number)
{
this->number = number;
}
首先,许多程序员往往觉得这很麻烦,不断地输入“this->”。其次,更重要的是,如果任何变量与参数或局部变量共享名称,则查找替换旨在更改“number”的名称可能会影响位于查找替换作用域中的成员变量,如下所示出色地。
您的选择2:
void A::setNumber(int number)
{
A::number = number;
}
我遇到的问题是,在大型类或具有大型函数的类中(您看不到函数或类被意外命名), A::(thing) 的格式看起来非常像访问名称空间的一部分,因此可能会产生误导。另一个问题与上一个选项中的#2 相同,如果您的名称与您正在使用的任何变量相似,有时可能会出现意想不到的混乱。
您的选择3:
void A::setNumber(int number)
{
mNumber = number;
}
这是所提供的三个选项中最好的一个。通过创建(并坚持!)涉及清晰且有意义的前缀的语法,您不仅可以创建本地(或全局)变量不会共享的唯一名称,而且可以立即清楚声明该变量的位置,不管你在什么上下文中找到它。我见过它像“mVariable”和“m_variable”一样完成,这主要取决于你是否更喜欢下划线而不是大写连接。此外,如果您的风格倾向于添加诸如 ' p 's on 指针或 ' g 's on 全局变量之类的内容,那么这种风格将很好地契合并受到读者的期待。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)