c++ - 在 C++ 中,访问器方法的约定( getter和 setter )

  显示原文与译文双语对照的内容

在 C++ 中有几个关于访问器方法的问题,但是没有一个能够满足我对这个问题的好奇心。

我尽可以能避免访问器,因为,像Stroustrup和它的他著名程序员,我认为一个类有很多错误。 在 C++ 中,大多数情况下,我可以向类添加更多的责任,或者使用friend关键字来。 然而在某些情况下,你确实需要访问特定的类成员。

有几种可能:

1.在所有不使用访问器

我们可以将相应的成员变量设为 public 。 这对Java是没有意义的,但对于 C++ 社区来说似乎是可以的。 但是,我有点担心事情是一个明确的副本,或者只是一个对象的读取( const ) 引用。

2.使用java样式获取/设置方法

我不确定它是否来自于 Java,但我的意思是:


int getAmount();//Returns the amount


void setAmount(int amount);//Sets the amount



3 。使用目标c 样式获取/设置方法

这有点奇怪,但似乎越来越普遍了:


int amount();//Returns the amount


void amount(int amount);//Sets the amount



为了使它的正常工作,你必须为成员变量找到一个不同的NAME 。 有些人追加下划线,它的他人在"m _ m"上。 我也不喜欢。

你使用哪种风格?

时间: 原作者:

从我的角度来看,从维护角度来看,我可以从维护角度使用 4万行 C++ 代码( 那只是一个项目):

  • 如果成员是不可变的( 例如 ),则不使用 getter/setter 。 const ) 或者简单,无依赖关系( 。像带有成员X 和Y的点类) 。

  • 如果成员是 private,也可以跳过 getter/setter 。 我还计算了内部 pimpl -classes的成员,如果. cpp 单元是小的,则为 private

  • 如果成员为 public 或者 protected ( protectedpublic 一样坏) 和非 const,则不使用简单或者具有相关性,则使用 getter/setter 。

作为一个维护人员,我想要获得 getter/setter的主要原因是,我有一个地方可以放置 points/logging/something 。

我喜欢替代 2的风格。 因为那是更可以搜索的( 编写可以维护代码的关键组件) 。

...