1. 文件命名:以模块名+下划线+功能名命名,如app_freeze.c,名字全部小写。原则上一个c文件 对应一个h文件,其中c文件内含函数实现,h文件内含宏定义、类型定义、外部接口声明。一个c文件不宜过大,过大说明实现的功能过多,需考虑重新划分功能,分成几个c文件来实现。
  2. 函数命名
    1. 外部函数:以模块名+下划线+功能名命名,模块名全部大写,功能名第一个字母大写并以匈牙利命名方式命名,如APP_EcgSetSpeed。原则上函数参数个数不得多于7个。
    2. 内部函数:以功能名命名,函数名第一个字母大写并以匈牙利命名方式命名,如EcgSetspeed()。内部函数一律加上static关键字,以将函数的作用域限定在本文件内。
  3. 宏命名:全部大写,词之间用下划线区分,如TASK_KEY_PRIORITY。统一给字符串和宏参数加上括号,如#define TASK_KEY_PRIORITY (100), #define MAX(a,b) ((a)>(b)?(a):(b))。
  4. 变量命名
    1.  不允许使用全局变量,用外部函数来代替。
    2.  静态模块变量命名:下划线加变量功能名,如static int _WaveDataNum;
    3. 局部变量:以变量功能名命名,第一个字母小写并以匈牙利命名方式命名,如 int speed;
    4. 结构体、联合体内部变量命名:与局部变量命名相同,如:int preCursorNum;
  5. 结构体、枚举、联合体类型名:与宏命名一样,全部大写,词之间用下划线区分,如GUI_WIDGET。
  6. 不允许把多个短语句写在一行中,即一行只写一条语句。
  7. if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{},且括号要各占一行。
  8. 示例:

    if (pUserCR == NULL)

    {

    return;

    }

  9. 注解>10%。模块、结构体、函数、模块和结构体级局部变量说明用途(函数内部变量可不说明),重要的if分支说明原因(非空判断可不说明),复杂的函数需要说明流程。
  10. 代码中直接出现的数字,需用注解说明或者用宏定义。
  11. 函数如果要在中途返回,注意检查和释放资源,避免内存泄漏。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐