原文地址:https://zh-google-styleguide.readthedocs.io/en/latest/contents/
一、头文件
1.您所依赖的符号 (symbols) 被哪些头文件所定义,您就应该包含(include)哪些头文件,
2.条件编译(conditional includes),代码可以放到其它 includes 之后。
3. 禁用类类型的全局变量,我们也不允许用函数返回值来初始化 POD 变量
4. 为类中的函数加上 const 限定符表明该函数不会修改类成员变量的状态
(如 class Foo { int Bar(char c) const; };).
5. 不要使用 uint32_t 等无符号整型, 除非你是在表示一个位组而不是一个数值, 或是你需要定义二进制补码溢出. 尤其是不要为了指出数值永不会为负, 而使用无符号类型. 相反, 你应该使用断言来保护数据.
命名:
1. 所有类型命名 —— 类, 结构体, 类型定义 (typedef), 枚举, 类型模板参数 —— 均使用相同约定, 即以大写字母开始, 每个单词首字母均大写, 不包含下划线.
2. 变量 (包括函数参数) 和数据成员名一律小写, 单词之间用下划线连接. 类的成员变量以下划线结尾, 但结构体的就不用
3. 声明为 constexpr 或 const 的变量, 或在程序运行期间其值始终保持不变的, 命名时以 “k” 开头, 大小写混合.
4. 常规函数使用大小写混合, 取值和设值函数则要求与变量名匹配:
5. 命名空间以小写字母命名. 最高级命名空间的名字取决于项目名称.
6. 枚举的命名应当和 常量 或 宏 一致: 优先选择常量风格的命名方式
注释:
1. 每个类数据成员 (也叫实例变量或成员变量) 都应该用注释说明用途
2. 对那些临时的, 短期的解决方案, 或已经够好但仍不完美的代码使用 TODO 注释.
1.只使用空格, 每次缩进 2 个空格.
2. 左大括号总在最后一个参数同一行的末尾处, 不另起新行.例: Type par_name3) {
3. 缺省缩进为 2 个空格.
4. 换行后的参数保持 4 个空格的缩进.
5. 注意所有情况下 if 和左圆括号间都有个空格. 右圆括号和左大括号之间也要有个空格:
6. 预处理指令不要缩进, 从行首开始.
7. 访问控制块的声明依次序是 public:, protected:, private:, 每个都缩进 1 个空格.
8. 构造函数初始化列表放在同一行或按四格缩进并排多行.
9. 命名空间内容不缩进.