zoukankan      html  css  js  c++  java
  • C代码规范

    大小

    • 一个C代码文件必须小于 1000 行(包含注释);
    • 一个C 函数必须小于150行(包含注释);

    注释

    • 实现代码与注释比列(6:4)
    • 新建文件,在文件头部需添加注释,如下:
      /* ****************************************************************************
       * Copyright (C) 2005-2009 CAMEO Communications, Inc.
       *
       * ***************************************************************************/
      
      /* ****************************************************************************
       *    Filename              : test.c
       *    LANGUAGE              : C
       *    TARGET ENVIRONMENT    : Broadcom
       * --------------------------------------------------------------------------
       *    HISTORY
       *    1. Version            : 1.0
       *       Date               : 09/17/2009 04:29:01 PM
       *       Author             : Liu Guixue , guixueliu@nettech-global.com
       *       Description        :
       * ***************************************************************************/
    • C函数前要有注释,如下:
    /***************************************************************/
    /*  Function Name   : test_function_header 
     *  Description     : 
    
     *  Input(s)        : 
     *  Output(s)       : 
     *  Returns         : TURE/FALSE
     *  Author          :   
     *  Date            : 2009-09-17
     */
    /***************************************************************/
    int test_function_header()
    • 复杂的处理,如if,while,for等需要加入注释;
    • 注释要用英文;
    • 注释使用/* ... */,不能使用 //;
    • 修改代码,注释标明修改点;

    缩进与留白

    • 代码缩进使用Tab键,缩进大小为4个空格;
    • 关键字后跟空格;(if  else 除外);
    • 操作符前后使用空格;

    建议

    • 尽量复用已有代码;
    • 代码接口清晰;
    • 返回值尽量用于出错判断;
    • 尽量避免使用goto;

    ......未完待续

    1. 编程规范
    2. 接口定义、接口调用 (特别是模块间接口;重点看接口参数、返回值、内部实现是否合理;避免直接调用低效的nmh;接口调用是否便于模块关闭、是否合理)
    3. 内存管理(CRU Buffer, Memory Pool, Malloc 等使用是否及时 Free)
    4. 使用指针(指针未判断是否为NULL,直接使用;释放指针指向内存,需要赋值指针为NULL)
    5. Lock问题(锁是否成对使用,调用模块API进行复杂设置,考虑用Event 代替 Withlock 进行异步调用)
    6. 代码效率(例如合理选择数据结构-树、链表和哈希表;尽量不使用超过2层的Loop循环;外层循环采用小的loop次数,内层循环采用大的loop次数)
    7. 复杂逻辑(例如一个 if 判断包括4~5个条件,用有意义的宏或子程序封装之简化复杂度; 再如超过4层的代码嵌套难以维护和理解,复杂嵌套逻辑可以考虑用break、return、宏或子程序等简化嵌套层数;复杂一般代表需优化!)
    8. 全局变量(全局变量未封装就直接使用,全局变量未分组管理而独立使用,函数内部用全局变量状态 控制执行两大块 不同的代码)
    9. 使用常量(代码里不要出现 21001 等常量值,用有意义的宏名称代替)
    10. 重复代码(多个函数内部使用相同代码,必须抽取子函数)
    11. 代码可读(合理命名,函数和变量命名,表达的意思要准确合理,追求没有注释即可自然阅读)
    12. 代码注释(复杂逻辑需注释,代码块意图需注释,不要把代码直接翻译为注释 e.g: if variable equal true13. 代码对其(代码编辑器中,将Tab转变为4个Spaces) 
  • 相关阅读:
    POJ 2976 Dropping tests
    【学习笔记-中国剩余定理】POJ1006 Biorhythms
    2017.10.6北京清北综合强化班DAY6
    P1607 [USACO09FEB]庙会班车Fair Shuttle
    2017.10.5北京清北综合强化班DAY5
    洛谷 P1379 八数码难题
    A. 拼音魔法
    A
    K
    A
  • 原文地址:https://www.cnblogs.com/y4247464/p/13323772.html
Copyright © 2011-2022 走看看