C++ 风格指南
命名
目录名
使用 小蛇式 命名法 例如: my_directory
文件名
使用 大驼峰 命名法, 例如: MyFile.cpp
。 对于单个类文件,文件名应该与类名一致。
类型名称
使用 大驼峰 命名法, 例如: MyClass
。 所有类型(包括类、结构、类型别名、枚举和类型模板参数)的名称都应遵循此规则
变量名
常用变量名
使用 小驼峰 命名法, 例如: myVariable
。
类和结构数据成员
对于私有成员使用 匈牙利 命名法, 例如: mMyMember
。
对于公开成员使用 小驼峰 命名法, 例如: myMember
。
常量名称
使用 大驼峰 命名法, 例如: MyConst
。
函数名称
使用 小驼峰 命名法, 例如: myFunction
。
命名空间名称
使用 小蛇式 命名法, 例如: my_namespace
。
枚举名称
使用 大驼峰 命名法, 例如: MyEnumerator
。
宏定义名称
使用 大蛇式 命名法, 例如: MY_MACRO
。
注释
注释风格
- 使用
// ...
表示行尾注释。 - 使用
/* ... */
用于行中注释。 - 使用
/// ...
表示 Doxygen 注释。
文件注释
在每个文件的开头使用许可证模板。
如果一个源文件(如 .h 文件)声明了多个面向用户的抽象(常用函数、相关类等),请在注释中说明这些抽象的集合。
结构和类注释
每个非显而易见的类或结构体声明都应附有注释,说明其用途和使用方法,至少包括简要介绍和公有属性说明。
对于分离的类,例如:.h
和 .cpp
,注释应与头文件放在一起。
函数注释
至少包括简要介绍、参数和返回值描述以及异常描述。
变量的注释
类数据成员
所有公共成员都应有注释。
全局变量
所有全局变量都应有注释,说明它们是什么,有什么用途,以及(如果不清楚)为什么要全局化。
实现注释
使用第三人称叙述。
函数参数注释
如果函数参数不清楚,应添加注释,例如: /*count=*/
。
TODO 注释
TODO 应包括大写的 TODO 字符串,之后是问题 ID 和 TODO 引用的描述。
例如:// TODO(#1234): 在 Foo 服务关闭后更新此列表。