2

我尝试遵循google c++ style guide。我有一个私人成员的二传手 - 年龄。

我的问题是 setAge 参数的名称应该是什么?在 java 中,我使用 this 关键字在它们之间具有相同的名称和区分。

void setAge(int age){
     this.age = age;
} 

在 c++ 中执行此操作的编码风格是什么(首选谷歌编码风格)。

4

5 回答 5

2

google C++ 编码标准建议您在类数据成员后面添加一个下划线。我认为遵循这一点非常重要,否则您可以保证隐藏具有局部变量名称的类数据成员。

关于 getter 和 setter,我个人觉得getXsetXconconciton 很乏味,当方法的作用很明显时。

int age() const; // gets age, what else could it do?

void age(int age); // sets age, following the principle of least surprise.
于 2012-07-31T08:43:38.647 回答
1

如果您遵循一些约定,那么约定实际上是无关紧要的。我倾向于使用newAge(或者new_age如果您真的想遵循 Google 指南)作为setAge()论据。

于 2012-07-31T08:28:52.727 回答
1

我遵循“标准库约定”。getter 和 setter 都像属性一样被调用:

void size(size_t size);
size_t size() const;

私有成员具有相同的名称并带有尾随下划线:

 size_t size_;
于 2012-07-31T08:40:31.367 回答
1

任何命名约定或多或少都是任意的,但在这种情况下,明显的解决方案是:

void setAge( int newValue /* or newAge */ );

根据当地约定,该函数可能被命名为setAge,或简称为age; 在后一种情况下,您需要某种约定来区分函数和数据成员。我见过的大多数地方都使用m_agemyAge用于数据成员(使用s_ageourAge用于静态数据成员);要么会成功。(我也见过_ageand age_。不过,一般来说,最好避免前导和尾随_,因为使用某些字体往往很难看到它们。)

于 2012-07-31T08:57:30.467 回答
0

我个人在 cpp 中遵循 java 约定。因此,假设您想将您的财产命名为“新时代”,则该成员将被命名为newAge. 然后将命名 gettergetNewAge()和 setter setNewAge(int newAge)

于 2012-07-31T08:35:14.880 回答