http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Function_Names#Function_Names
Regular functions have mixed case; accessors and mutators match the name of the variable: MyExcitingFunction(), MyExcitingMethod(), my_exciting_member_variable(), set_my_exciting_member_variable().
对用户隐藏实现细节,这样他/她就不知道访问器/修改器方法是否返回/修改成员变量,这不是封装的全部意义所在吗?如果我更改变量名称或更改它在对象中的存储方式会怎样?
编辑:
如果我有一个实例变量 int foo_
它看起来很简单
int foo() const { return foo_; }
但是如果我添加另一个返回 foo_ + 2
的方法,我应该命名为 bar
还是 GetBar
?
int bar() const { return foo_ + 2; }
int GetBar() const { return foo_ + 2; }
如果我选择GetBar
,然后决定将返回值缓存在另一个成员变量bar_
中,我是否必须将方法重命名为bar
?
最佳答案
实际上,封装的要点是隐藏一个类的内部工作,不一定要隐藏事物的名称。成员变量的名称无关紧要;它是访问器或修改器提供的间接级别。
拥有访问器使您能够在不破坏类与外界的接口(interface)的情况下更改类的内部工作方式(包括成员变量的名称)。类的用户无需关心实现细节,包括在类内部命名的内容,而只关心从外部看到的类的行为。
换句话说,类的用户不应依赖 Google 的风格指南来确定他们是否正在修改成员变量。
关于c++ - 为什么 Google 在成员变量之后命名访问器和修改器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14712404/