前言
今天快速翻看了谷歌C++编码规范http://zh-google-styleguide.readthedocs.org/en/latest/google-cpp-styleguide/contents/,学到了一些东西。
对于这个规范,我不会100%接收,比如里面的变量命名规范就跟工作项目的代码冲突了,还有谷歌建议switch中的每个块要加上{}等等。
我在看文档的过程中,把学到的新东西记录下来,有些以前就习以为常的编码习惯,我就不再记录,比如析构函数要用virtual关键字,用sizeof(varname)代替sizeof(type)等。这里的摘抄,都是我认为具有通用性的建议。
正文
- 所有头文件都应该使用 #define 防止头文件被多重包含, 命名格式当是: PROJECT_PATH_FILE_H_
- 能用前置声明的地方尽量不使用 #include.
- 复杂的内联函数的定义, 应放在后缀名为 -inl.h 的头文件中.
- 使用标准的头文件包含顺序可增强可读性, 避免隐藏依赖: C 库, C++ 库, 其他库的 .h, 本项目内的 .h.
- 不要在 .h 文件中使用匿名名字空间.
- 不要将嵌套类定义成公有, 除非它们是接口的一部分, 比如, 嵌套类含有某些方法的一组选项.
- 禁止使用 class 类型的静态或全局变量: 它们会导致很难发现的 bug 和不确定的构造和析构函数调用顺序.
- 构造函数中只进行那些没什么意义的初始化, 可能的话, 使用 Init() 方法集中初始化有意义的 (non-trivial) 数据.
- 类的每个区段内的声明通常按以下顺序:
- typedefs 和枚举
- 常量
- 构造函数
- 析构函数
- 成员函数, 含静态成员函数
- 数据成员, 含静态数据成员
- 我们不允许使用缺省函数参数.
- 我们禁止使用 RTTI.
- 对于迭代器和其他模板对象使用前缀形式 (++i) 的自增, 自减运算符.
- 整数用 0, 实数用 0.0, 指针用 NULL, 字符 (串) 用 ‘\0‘.
- 关于函数的命名,永远不要用省略字母的缩写,比如不能将count缩写成cnt。
- 函数声明处注释描述函数功能; 定义处描述函数实现.
- 向函数传入 NULL, 布尔值或整数时, 要注释说明含义, 或使用常量让代码望文知意.
- 如果函数声明成 const, 关键字 const 应与最后一个参数位于同一行.
- 如果有些参数没有用到, 在函数定义处将参数名注释起来:
- return 表达式中不要用圆括号包围.
- 预处理指令不要缩进, 从行首开始.
时间: 2024-08-06 16:01:08