1-文件
- 文件大小:每个文件应该在2000行以内(含代码行和注释行)。
- 头部注释完整、正确,修改记录清楚。
- 注释量达到40%。修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。
- 文件名称要明确清晰,反映实际的功能。
2-函数
- 函数名称要明确清晰,反映实际的功能。名称第一个字母小写。
- 函数长度<200行(含代码行和注释行)。
- 函数头部注释完整、准确,修改记录清楚。
- 只在函数前部定义变量。变量注释要清楚。
- 对传入参数和所使用的全局变量作了检查。
- 函数体中对各判断、分支语句进行了注释。
- if-else语句对所有情况都作出处理。
- 双目运算符前后留空格。
- 运算符用括号确定运算优先级。
- 缩进层次<4层。
- 复杂度<15 (对if else while do for case && ||等计数) 。
- 调用其他函数时检查函数的返回值。
- 代码缩进:必须采用TAB缩进,TAB键必须设置为四个空格长度。
- 花括号“{”和“}”单独占一行,与起始行的第一个字符对齐。
- 多于120个字符的长语句,要分成多行书写。
- 循环、判断等语句中若有较长的表达式或语句,则要换行,长表达式要在低优先级操作符处划分新行,操作符放在新行之首。
- 若函数或过程中的参数较长,则要换行。
- 不允许把多个短语句写在一行中,即一行只写一条语句。
3- 模块
- 模块设置初始化标记,防止在没有初始化的情况下被调用,以及重复初始化。
- 对公共数据进行了共享保护。
- 在模块初始化时分配内存。
- 有内存分配时编写内存销毁模块。
4-变量
- 变量的命名:将变量的类型小写写在前边,后续单词的首字母大写;使用名词命名;对于某些常见的变量类型,可以使用通用的简写形式命名。
- 使用#define 定义的常量,都应采用大写,单词之间最好加下划线,尽量将其分类,采用统一的分类名称,中间加上下划线。
- 变量、常量注释要清楚。
- 为消息数据定义结构体。
- 变量声明后明确进行初始化。
- 对常量使用枚举或者宏定义。
- 为指针、数组和字符串多分配一个单元的空间。
- 指针使用前做有效性检查,用完后置空。
- 数组下标使用前做范围检查。
- 字符串明确在末尾添加了NULL (‘\0’)。
- 全局变量尽量调整为局部或静态变量。
5-其它
- 临时申请的对象采用在该对象上加锁的方式保护,不应该在接口上做保护。
- 调用第三方库时,对其抛出的异常进行处理。
- 编译过程不能有warning提示。
- 模块间不能使用对象、结构指针进行异步数据传递。