我很快就开始了一个小型的C ++项目,并根据范围详细阐述了一些变量的命名约定规则。
我制作了班级成员_prefixed_with_underscore
和方法参数suffixed_with_underscore_
。我很快就发明了一切的命名约定,比如全局变量(好的,那些可能很重要),内联全局函数,试图提高代码的可读性。
我读过this question and its answers,回答了我对命名约定的一些怀疑,特别是有关方法参数名称的疑问。也许有a_rule_like_this_
参数名称可能不是一个好主意。
所以,我的问题是,在编程时,您对不同的“实体”使用了哪些命名约定,特别是参数名称?感谢。
答案 0 :(得分:3)
有许多人创建了约定 - 谷歌用于c ++命名约定
还有风格指南也提出了编程方法。
您可能不同意所有要点,但在您的项目/团队/公司中保持一致是重要的。
对于不同的语言(以及跨操作系统),命名约定也会有所不同。所以不要对C ++使用PHP建议。 (前面的_给C ++带来了一个问题)对于C ++,最常见的约定是参数是普通文本,但实例变量以_结尾或以m_开头(我更喜欢前者)
答案 1 :(得分:1)
永远不要使用带前缀'_'的任何类型的标识符。前缀下划线保留给编译器实现者用于他们自己的预期目的。这意味着它对C / C ++编译器实现者完全有效,可以创建宏,隐式局部变量,命名空间,只要它们至少有一个下划线。
如果您的代码以其他方式符合c ++标准,则标识符上带有前缀下划线意味着不会期望它会在其他编译器上编译,或者您正在使用的编译器的不同版本。< / p>
答案 2 :(得分:1)
不要在标识符前加下划线,因为有些编译器会将它们保留用于非标准用途。
我喜欢Google C++ style guide中的命名惯例。
答案 3 :(得分:1)
这不过是一个意见问题。所以,这是我的。
以下是我的一些惯例:
class MyGizmo { public: int DoIt(); private: string myString_; }; typedef vector<MyGizmo> MyGizmos; namespace somewhere { MyGizmos gizmos; }; int MyGizmo::DoIt() { int retVal = 0; string strCopy = myString; retVal = strCopy.length(); return retVal; }