【发布时间】:2021-08-11 18:33:56
【问题描述】:
- 根据https://google.github.io/styleguide/cppguide.html#Variable_Names,静态和非静态类的数据成员的命名与普通的非成员变量一样,但结尾带有下划线。
- 根据https://google.github.io/styleguide/cppguide.html#Constant_Names,“声明为 constexpr 或 const 的变量,其值在程序执行期间是固定的,以前导“k”命名,后跟大小写混合。” -- 注意“在项目期间”部分。
- 根据https://google.github.io/styleguide/cppguide.html#Access_Control“将类的数据成员设为私有,除非它们是常量。这简化了关于不变量的推理,但必要时以访问器(通常为 const)的形式提供一些简单的样板文件。”
所以...我认为这留下了一些解释空间,我想知道是否有人知道标准的精神是什么...
class A {
const int size_;
public:
A(int size) : size_(size) {}
};
- 结尾的下划线是“私人”还是“阶级”的标志?
- const 字段应该是“kSize”还是“size_”?
- 如果移到公开,应该是“大小”吗?
【问题讨论】:
-
“我认为这留下了一点解释的空间”——怎么会这样?第一个引述没有提到“私人”——you 毫无理由地引入了这个词。第二个引用不适用于您的代码,因为您的代码与静态存储持续时间无关(您甚至强调了这一点!)。我确实在第三个引用中看到了一些解释空间,但这只是因为您遗漏了定义“常量”在该上下文中的含义的链接(它链接到第二个引用)。所以……看来所有的“解释空间”都是你介绍的?
-
我应该更清楚...结构字段没有尾随的“”并且必须是公开的。与附加或附加的“”相结合,在其他语言(例如python / dart)中通常意味着私有,这让我怀疑它。附加了“_”的公共字段看起来有些奇怪......也许只是我,但这就是我问的原因。
-
这里是关于样式中常量的模糊部分(粗体)> 所有这些具有静态存储持续时间的变量(即静态和全局变量,请参阅存储持续时间了解详细信息)都应以这种方式命名。 此约定对于其他存储类的变量是可选的,例如自动变量,否则适用通常的变量命名规则。来自google.github.io/styleguide/cppguide.html#Constant_Names
-
诚然,阅读标准时更难使用的技能之一就是不阅读不存在的东西,尤其是当您过去看到过类似的东西时。 (顺便说一句,尝试使用反引号在 cmets 中的下划线上强制“代码格式化”,如
_。)