C语言编码规范

常见规范

  • 改变运行流程的语句,如returncontinuebreak等单独成行
  • 宏定义全部大写
  • 尽量不用宏去定义代码段
  • 结构体定义中不要使用原始数据类型,使用 _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定义新类型
  • 没有业务含义的,纯粹内部使用的,使用通用类型即可

命名规则

  • 在不影响理解的情况下,名字长度越短越好,适用于变量、函数名、文件名等一切对象
  • 在同一空间(比如目录,头文件)中的名字,采用相似的命名,包括:名字长度、名字前缀、下划线的数量和位置等
  • 在不影响理解的情况下,尽量连写而不是使用下划线。这一点非常重要!!!
  • 除宏定义外,其他一切名称均小写
  • 包含的外部资源(如外部头文件等),维持原状,无需修改

代码组织

  1. 项目工程需要起个名字,长度不要超过三个字符,假设为XXX
  2. 添加一个XXX_include.h头文件,包含所有的需要的系统头文件和项目内部头文件
  3. 添加一个XXX_global.h头文件和C文件,全局的宏定义,业务无关的函数等全部写在这个文件中
  4. 添加一个XXX_main.c文件,写main函数
  5. 项目内部的功能文件,一个xxx_yyy.c对应一个xxx_yyy.h头文件:
  • 头文件中,使用宏定义做包含保护,宏定义名为xxx_yyy_h
  • 头文件中不包含其他任何头文件
  • c文件中,仅包含xxx_include.h
  • c文件中的所有函数,均要在对应的头文件中声明

其他

  1. 改变运行流程的语句,如returncontinuebreak 单独成行
  2. 宏定义全部大写
  3. 宏定义的规则:宾语在前,谓语在后,也就是如LOG_PRINT这样命名
  4. 尽量不使用宏定义代码段
  5. 结构体定义中不使用原始数据类型
  6. 结构体定义的最后一个字段另起一行
  7. 在中大型项目或者有动态链接库参与的项目中,为避免出现不可知错误,不适用全局变量。真要使用全局变量的,将全局变量放在一个结构体变量中来使用
  8. 一个函数不应该太过于长,当函数过于长的时候要学会分解该函数
  9. 花括号有时候可以省略
  10. 全局变量慎用!!!用了要命名为大写
  11. 重复的代码可以用宏定义来代替


标题:C语言编码规范
作者:staymeloo7
联系方式:staycoolsun@gmail.com

    评论
    0 评论
avatar

取消