C语言-编程规范
摘录自《华为C语言编程规范2011-05-09》
总体原则
- 清晰第一,清晰性是易于维护、易于重构的程序必须具备的特征
- 简洁为美,简洁就是易于理解且易于实现
- 选择合适的编码风格,若重构时尽量保持原风格
头文件
- 头文件应当职责单一
- 禁止头文件循环依赖
- 禁止包含用不到的头文件
- 禁止在头文件中定义变量
- 禁止在.c中通过
extern
的方式使用外部函数接口、变量 - 禁止在
extern C
中包含头文件
函数
- 一个函数仅完成一个功能
- 避免函数过长,新增函数不超过50行
- 函数参数不超过五个
- 避免函数的代码块嵌套过深,新增函数的代码块嵌套不超过4层
- 可重入函数应避免使用共享变量,若需使用,应通过互斥手段
- 对参数合法性检查,统一规定由调用者负责还是函数内部检查,默认由调用者负责
- 函数不变参数使用
const
修饰 - 检查函数所有非参数输入的有效性,如数据文件、公共变量等
- 除打印类函数外,不使用可变长参数
- 在源文件内的函数,除非外部可见,否则应加上
static
修饰
变量
- 全局变量增加
g_
前缀 - 静态变量增加
s_
前缀 - 一个变量只有一个功能
- 数据结构功能单一,不要设计面面俱到的数据结构
- 不用或者少用全局变量,模块内的数据应通过接口来对外部开放
- 通讯过程中使用的数据结构,必须注意字节序
- 严禁使用未初始化的变量作为右值
- 尽量减少没有必要的数据类型默认转换和强制转换
宏和常量
- 用宏定义表达式时,要使用完备的括号
- 多条语句写成
do while(0)
的方式 - 使用宏时,不允许入参变化
- 除非必要,应尽可能使用函数代替宏
- 宏定义中尽量不使用
return``goto``continue
等改变程序流程的语句