Skip to content

C编程规范

  1. 版权和版本

    给每个函数,每个文件,都注上版权和版本。对于C/C++的文件,文件头应该有类似这样的注释:

    /*
     * @FileName:network.c 
     * @Author: your name
     * @Date: 2019-10-28 15:21:58
     * @Description: network api
     * @LastEditTime: 2019-10-28 15:22:03
     * @Version:1.0
     */
    

    而对于函数来说,应该也有类似的注释:

    /*
     * @FunctionName: network_init
     * @Description: network init
     * @Params:
     * @Return:
     * @Author: your name
     */
    
  2. 代码格式

    加上必要的缩进、空格、换行、对齐等,让代码看起来浅显易懂。

  3. 勤写注释

  4. 对参数进行检查

    在函数内,对传进来的参数,尤其是指针进行检查。在函数外,也要对函数的返回值进行检查。

  5. 将错误处理提前

    在用if语句判断出错时,将错误的条件提前,让别人一眼就能看到不合法的条件,把正常处理的代码延后。

  6. 内存分配问题

    malloc和free必须配对使用,malloc申请的内存必须初始化,free释放的内存必须置空。

  7. 变量的初始化

    定义变量时,就要对其初始化,以防止在后续使用未初始化的变量,这会造成未定义的行为。

  8. 函数名和变量名的命名

    • 直观,简短易读
    • 全局变量和成员变量需要加上前缀
    • 与标准库命名风格保持一致
  9. 修改别人程序

    将原来的代码加上注释,然后在后面添加自己的代码,这样有利于代码的维护。

    /*
    *----commented by tom ----
    * char *p = (char *)malloc(10);
    * memset(p, 0, 10);
    */
    
    /* ---- add by tom ----*/
    char *p = (char *)calloc(10, sizeof(char));
    
  10. 将相同的代码改写成函数或者是宏

    如果有一些程序的代码片段很相似,或直接就是一样的,把它们放在一个函数中。函数的功能应该越单一越好。如果这段代码不多且会被经常使用,要想避免函数调用的开销,可以写成宏。

  11. 多加括号

    在表达式中,加上括号,让人一眼就明白你的意图。

  12. 使用const修饰只读变量

  13. 函数的参数个数

    如果函数的参数个数很多(超过6个),请改用结构体传参。

  14. typedef的使用

    typedef最大的价值在于代码的维护,在跨平台编程中,不同平台对于字长会有区别,正确使用typedef可以有效地维护你的代码。在使用结构体和函数指针时,typedef可以提高代码的可读性。

  15. 将常量改为宏

    #define MAX_NUM 100
    int num[MAX_NUM];
    
  16. 重视WARNING信息

    WARNING信息是编译器在编译时给出的警告信息,它提示你代码中可能存在的问题。在编写代码时,应该尽量消除WARNING信息。