1、只在本文件访问用static修饰
2、函数命名
动词开头,说明功能。
下划线分隔
3、参数
(1)命名,用名词
(2)数量7个以内,多则使用结构体
(3)函数体内判断合法性:范围、负值、nullptr空指针
(4)结构体、联合体union,等大体积参数用指针或引用
(5)不变的值用const,提高健壮性
4、局部变量
(1)定义时最好初始化为无效值:-1,0,nullptr
(2)不可将其地址返回到函数外,出了函数会自动释放
5、特别注意申请的资源
(1)堆内存、打开的文件、管道、共享内存、信号量、锁、消息队列、套接字等
(2)若函数内部未释放,在外部一定要有完整的释放逻辑,避免资源泄漏
6、逻辑结构
- 正常业务逻辑,最后return成功
- goto只能往后跳,最好不用
- for嵌套不超过3层
- 注意while(1)/for(;;)出现死循环,斟酌跳出条件
- while(1)/for(;;)中避免空耗CPU,可加usleep
7、注释
(1)函数开始
/**
* @brief 函数功能简要说明
* @param 1 第一个参数说明
* @param 2 第二个参数说明
* @return 返回结果说明
*/
(2)特殊功能的变量,需要注释
(3)复杂的逻辑结构,需要注释
(4)复杂的算法,需要注释
(5)调用的特殊函数,需要注释
(6)单行用//,多行用/**/
8、代码布局
- 用Tab扩展为4个space空格
- 函数内的代码,以4space开始
- if、while、for、switch等的代码块的内部代码以4space开始
9、空行分隔代码
(1)定义几个局部变量后面,用空行
(2)判断参数合法性后面,用空行
(3)while、for等逻辑块,前后用空行
(4)函数末尾的return前面,用空行
10、return
(1)最好返回执行成功与失败结果,由参数输出处理的结果
(2)注意锁,是否需要先unlock,避免死锁
11、函数需分解成多个子函数情况
(1)代码行数超过200行,考虑是否需提取一些逻辑作为子函数
(2)函数做了超过一件比较整体的事,每一个整体的事应为一个函数
欢迎转载请注明出处:海漩涡
http://blog.csdn.net/tanhuifang520