C语言编码规范
常见规范
- 改变运行流程的语句,如return,continue,break等单独成行
- 宏定义全部大写
- 尽量不用宏去定义代码段
- 结构体定义中不要使用原始数据类型,使用 _t
- 不要使用原始的数据类型,统一使用如下定义
// meta type
typedef bool B8;
typedef char C8;
typedef signed char I8;
typedef signed short I16;
typedef signed int I32;
typedef signed long long 64;
typedef unsigned short U16;
typedef unsigned int U32;
typedef unsigned long long U64;
typedef float F32;
typedef double F64;
- 结构体定义的最后一个字段后另起一行
- 尽量不使用全局变量,因为有可能跟动态库中的变量命名起冲突
- 如果必须使用,那么只是用一个名为CTX的变量
- 将要使用的全局变量统一包装到一个xxx_ctx的结构体中
- 该变量定义在main函数所在的源码中,不能再头文件中暴露
- 将该变量作为第一个参数传递给每一个需要使用到它的函数中
- 接口数量越少越好,不影响理解的,能合并的就合并
- 有业务含义的,或者充当接口的类型,尽量使用typedef定义新类型
- 没有业务含义的,纯粹内部使用的,使用通用类型即可
命名规则
- 在不影响理解的情况下,名字长度越短越好,适用于变量、函数名、文件名等一切对象
- 在同一空间(比如目录,头文件)中的名字,采用相似的命名,包括:名字长度、名字前缀、下划线的数量和位置等
- 在不影响理解的情况下,尽量连写而不是使用下划线。这一点非常重要!!!
- 除宏定义外,其他一切名称均小写
- 包含的外部资源(如外部头文件等),维持原状,无需修改
代码组织
- 项目工程需要起个名字,长度不要超过三个字符,假设为XXX
- 添加一个XXX_include.h头文件,包含所有的需要的系统头文件和项目内部头文件
- 添加一个XXX_global.h头文件和C文件,全局的宏定义,业务无关的函数等全部写在这个文件中
- 添加一个XXX_main.c文件,写main函数
- 项目内部的功能文件,一个xxx_yyy.c对应一个xxx_yyy.h头文件:
- 头文件中,使用宏定义做包含保护,宏定义名为xxx_yyy_h
- 头文件中不包含其他任何头文件
- c文件中,仅包含xxx_include.h
- c文件中的所有函数,均要在对应的头文件中声明
其他
- 改变运行流程的语句,如return、continue、break 单独成行
- 宏定义全部大写
- 宏定义的规则:宾语在前,谓语在后,也就是如LOG_PRINT这样命名
- 尽量不使用宏定义代码段
- 结构体定义中不使用原始数据类型
- 结构体定义的最后一个字段另起一行
- 在中大型项目或者有动态链接库参与的项目中,为避免出现不可知错误,不适用全局变量。真要使用全局变量的,将全局变量放在一个结构体变量中来使用
- 一个函数不应该太过于长,当函数过于长的时候要学会分解该函数
- 花括号有时候可以省略
- 全局变量慎用!!!用了要命名为大写
- 重复的代码可以用宏定义来代替
评论
0 评论