• C编程风格.


                                C语言编程风格.

    关于编程风格,不同书上有不同规范,不同公司都有自己的一套定义.根据自己的编程习惯做个简要说明.

    1.变量定义

    在定义变量时,前缀使用变量的类型,之后使用表现变量用途的英文单词或单词缩写,且每个单词或缩写的首字母大写.

    无符号变量使用u8,u16,u32...  eg:unsigned char u8Temp;
    有符号变量使用s8,s16,s23...  eg:int s32Temp;
    浮点数变量使用 f32,d64....... eg:float f32Temp double d64Temp;
    字符串变量使用s; eg:char sTemp;
    数组变量使用a; eg:unsigned char au8Temp[10]; int a32Temp[10];
    指针变量使用p; eg:unsigned char* pTemp;
    枚举变量使用e; eg: enum Temp eTemp;
    结构体变量使用st; eg:struct student stTemp;

    PS:另外需要说明的是.

    unsigned char gu8NoiseDetectFlag = 0;      //定义全局变量要在变量名前加上g(globar-->全局的意思)
    unsigned char u8PrePointCnt = 0;         //定义局部变量就省略掉.

    2.宏定义

    对于宏定义使用:使用大写或者大写+下划线的方式.

    PS:#define CHIP_SENSING_TIMES 1

    3.程序排版

    一行程序的开始使用tab键进行对其,一行的中间使用空格键进行对齐.

    //PS:注意tab缩进.

    void Locate_FindStableFreq(void)
    {
      uint8_t u8Idx;
      for(u8Idx=0; u8Idx<20; u8Idx++)
      {
        TP_FrequencyHopping(FALSE);
        if(Locate_CheckNL() <= gcstSysAlgorithm.u8NL_MinLevel)
        break;
      }
    }

    4.注释的书写

    这里注释分为函数头注释,程序中代码注释.

    函数头注释使用如下形式.

    PS:由于写的程式并不是自己一个人使用,通常很多时候一个project会由一个Team完成,这时候就非常有必要针对每个function加上必要的注释,这样别人拿来使用的时候,只需通过函数头注释描述就大概能知道此function用途跟意义,这样可以节省开发时间!!!

    /*--------------------------------------------------------------------------------------------------------------------*/
    /* Function: DrvSPI_Busy                                               */
    /*                                                          */
    /* Parameters:                                                  */
    /* eSpiPort [in]: Specify the SPI port                                        */
    /*                                                           */
    /* Returns:                                                       */
    /* TRUE: The SPI port is in busy.                                         */
    /* FALSE: The SPI port is not in busy.                                      */
    /*                                                        */
    /* Description:                                                 */
    /* Check the busy status of the specified SPI port.                               */
    /*-------------------------------------------------------------------------------------------------------------------*/
    BOOL DrvSPI_Busy(E_DRVSPI_PORT eSpiPort)
    {

      // NUC103 have 3 SPI only.
      if(eSpiPort >= eDRVSPI_MAX) 
        return FALSE;

      return ((SPI_PORT[eSpiPort]->CNTRL.GO_BUSY)?TRUE:FALSE);
    }

    5.测试代码

    在编译的同时,需要注意添加适当的测试代码,这样可以减轻以后测试代码时的工作量.

    这里的第五条,起始已经不仅仅是变成风格的问题,涉及到编程效率,变成习惯的范畴.

    不过这真的是一个非常好的习惯!!!

  • 相关阅读:
    Docker系列
    Eclipse 安装TestNG插件,结合Maven使用
    HttpClient设置忽略SSL,实现HTTPS访问, 解决Certificates does not conform to algorithm constraints
    Jenkins Html Rport 使用frame报错解决办法
    Zend Framework1 框架入门(针对Windows,包含安装配置与数据库增删改查)
    Windows下Nginx配置SSL实现Https访问(包含证书生成)
    Windows下Nginx Virtual Host多站点配置详解
    幽灵般的存在:零宽空白
    我的公司培训讲义(2):设计模式思想精要教程
    突如其来而又必然的离职
  • 原文地址:https://www.cnblogs.com/AlwaysOnLines/p/4926648.html
Copyright © 2020-2023  润新知