Skip to content

3. 命名约定

Kerwin zhang edited this page Jul 16, 2023 · 2 revisions

最重要的一致性规则是命名管理. 命名的风格能让我们在不需要去查找类型声明的条件下快速地了解某个名字代表的含义: 类型, 变量, 函数, 常量, 宏, 等等, 甚至. 我们大脑中的模式匹配引擎非常依赖这些命名规则.

命名规则具有一定随意性, 但相比按个人喜好命名, 一致性更重要, 所以无论你认为它们是否重要, 可以尝试使统一风格.

3.1.原则

  • a)同一性:在编写一个子模块或派生类的时候,要遵循其基类或整体模块的命名风格,保持命名风格在整个模块中的同一性。

  • b)标识符组成:标识符采用英文单词或其组合,应当直观且可以拼读,可望文知意,用词应当准确,避免用拼音命名。

  • c)最小化长度 && 最大化信息量原则:在保持一个标识符意思明确的同时,应当尽量缩短其长度。

  • d)避免过于相似:不要出现仅靠大小写区分的相似的标识符,例如"i"与"I","function"与"Function"等等。

  • e)避免在不同级别的作用域中重名:程序中不要出现名字完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但容易使人误解。

  • f)正确命名具有互斥意义的标识符:用正确的反义词组命名具有互斥意义的标识符,如:"minValue" 和 "maxValue","getName()" 和"setName()" ….

  • g)避免名字中出现数字

3.2.函数

  • a)类的函数名称应采用首字母小写类似handleXXX命名,例如:handleColor;不推荐采用例如 HandleColor;除了标准c风格代码,标准模板库,不推荐用下划线,例如,handle_color。容易与系统函数标准函数重名,导致不能目视而知其作用范围。

  • b)函数参数比较多时,应考虑用结构代替,参数不能超过6个。

3.3.变量

  • a)变量命令方式应采用驼峰命令方式。例如handleColor;不同类型变量打头方式见表 1,当类型叠加时,应以最能够表现变量类型的打头方式,例如int类型的指针,应采用p打头;指针类型的数组,应采用a打头,数组的指针因采用p打头。

  • b)不同作用范围的变量应在类型前面添加前缀加下划线。

  • c)如果不能避免函数参数比较多,应在排版上可考虑相似含义的参数占用一行,参数名竖向对齐。甚至每个参数一行。编号:尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。

3.4.类型名

  • a)类名和结构体首字母大写,例如MyClass,MyStruct。

  • b)类和对象名应是名词。

  • c)枚举定义以E_打头,且应全大写,使用下划线分割不同的引文单词,如E_TYPE_STUDENT_INFO,各枚值名字应为枚举类型名打头,例如E_TYPE_STUDENT_INFO_NUMBER。

  • d)宏定义以DEF_打头,且应全大写,使用下划线分割不同的引文单词,如DEF_TYPE_ID。


3.5.风格兼容性

  • a)对于移植的或者开源的代码,可以沿用原有风格,不用C++的命名规范。

Clone this wiki locally