要细说代码规范,可以说出一本书,但如果不是为了专门做代码规范,谁又会去看这种死板的约束性条款呢。这里只介绍本人在工程中使用频度比较高的规范,只要遵循这些规范,最起码不会被大佬笑话。
1. 头文件与预定义
- 尽可能少的在头文件中包含其他头文件
- 头文件要控制编译,防止被多次编译 #ifndef XXX_H 或#program once
- 只引用需要的头文件
- 先引用系统头文件,再引用自定义头文件
2. 变量命名
- 小驼峰命名法
- 下划线连接命名法
- 成员变量用m_ 或 _ 开头,指针变量用p开头,全局变量用g开头
- 指针变量初始化时赋值,删除内存后置空
- 尽可能少的定义全局变量,静态变量, 函数内静态变量,类静态变量等。多线程会存在问题,且为跟读代码增加难度。
3. 表达时
- 长句截断换行,方便阅读
- 一行表达时不得太多的逻辑
- 遍历容器时谨慎做删除或者添加操作
- 尽量不要在循环体内部定义变量
- 在debug模式下多使用断言检查逻辑的正确性
- switch case 注意用break分隔,并提供default
- 尽量不要用goto label语句(程序的跳转不可控)
4. 函数
- 函数参数常使用const修饰提高健壮性
- 函数的return不要返回栈内存的指针
- 函数体不宜过大,每个函数不要超过100~200行
- 对外公开的函数/方法放在头文件中/或类public下。不对外公开的不要放在头文件中,或者放在private下。
5. 注释
- 文件注释: 作者,文件名,文件说明
- 注释规范: 函数的Doxygen 注释规范
/**
* @brief 函数注释
* @ param
*/
void func()
{ }
- 未完成的功能用todo注释: //todo