我尝试遵循google c++ style guide。我有一个私人成员的二传手 - 年龄。
我的问题是 setAge 参数的名称应该是什么?在 java 中,我使用 this 关键字在它们之间具有相同的名称和区分。
void setAge(int age){
this.age = age;
}
在 c++ 中执行此操作的编码风格是什么(首选谷歌编码风格)。
我尝试遵循google c++ style guide。我有一个私人成员的二传手 - 年龄。
我的问题是 setAge 参数的名称应该是什么?在 java 中,我使用 this 关键字在它们之间具有相同的名称和区分。
void setAge(int age){
this.age = age;
}
在 c++ 中执行此操作的编码风格是什么(首选谷歌编码风格)。
google C++ 编码标准建议您在类数据成员后面添加一个下划线。我认为遵循这一点非常重要,否则您可以保证隐藏具有局部变量名称的类数据成员。
关于 getter 和 setter,我个人觉得getX
和setX
conconciton 很乏味,当方法的作用很明显时。
int age() const; // gets age, what else could it do?
void age(int age); // sets age, following the principle of least surprise.
如果您遵循一些约定,那么约定实际上是无关紧要的。我倾向于使用newAge
(或者new_age
如果您真的想遵循 Google 指南)作为setAge()
论据。
我遵循“标准库约定”。getter 和 setter 都像属性一样被调用:
void size(size_t size);
size_t size() const;
私有成员具有相同的名称并带有尾随下划线:
size_t size_;
任何命名约定或多或少都是任意的,但在这种情况下,明显的解决方案是:
void setAge( int newValue /* or newAge */ );
根据当地约定,该函数可能被命名为setAge
,或简称为age
; 在后一种情况下,您需要某种约定来区分函数和数据成员。我见过的大多数地方都使用m_age
或myAge
用于数据成员(使用s_age
或ourAge
用于静态数据成员);要么会成功。(我也见过_age
and age_
。不过,一般来说,最好避免前导和尾随_
,因为使用某些字体往往很难看到它们。)
我个人在 cpp 中遵循 java 约定。因此,假设您想将您的财产命名为“新时代”,则该成员将被命名为newAge
. 然后将命名 gettergetNewAge()
和 setter setNewAge(int newAge)
。