项目代码命名规范

1.规范要求

1.1 遵循的基本原则

        1.标识符的命名要清晰明了,有明确含义,可以采用英文单词或中文拼写表示,使用完整的拼写或者易于理解的缩写,避免使人产生误解。较短的单词可通过去掉“元音”形成缩写,较长的单词可取单词的头几个字母形成缩写,尽量使用约定俗成的公认的缩写。

        2.命名中若使用特殊约定或缩写,则要有注释说明。应该在源文件的开始之处,对文件中所使用的缩写或约定,特别是特殊的缩写,进行必要的注释说明。

        3.对于变量命名,禁止取单个字符(如i 、j 、k...),但i 、j 、k 作为局部循环变量是允许的。

        4.除非必要,不要用数字或特殊字符来定义标识符。

        5.用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。

        6.除了编译开关/头文件等特殊应用,应避免使用以下划线开始和结尾的定义。

        7.在同一软件产品内,应规划好接口部分标识符(变量、结构、函数及常量)的命名,防止编译、链接时产生冲突。如可在接口部分的标识符之前加上“模块”的标识等。

        8.命名规范必须与所使用的系统风格保持一致,并在同一项目中统一。

1.2 函数的命名规则

        注:下文提及的单词,指具有实际含义的一个英文单词或中文拼音的完整拼写或者缩写,比如Response、Rsp。 

        1.函数命名规则主体上采用“帕斯卡命名法”,即采用:所有的单词首字母大写,使用一个大写字母来标记逻辑断点,举例如下:

        void *MqttClientConnect(MqttClientParam *pParam);

        2.如果为了区分模块层次、逻辑层次,或者使用的单词个数比较多,可以使用下划线进行断开,举例如下:

        int Subscribe_BatchProPubReply(void *pClient);

        3.应确保每个函数声明中的参数的名称、类型和定义中的名称、类型一致。

        4.5G操作系统项目特别定义

        在项目功能开发时,函数分为内部实现函数和对外API接口函数。

        如果是内部实现函数遵循如上规则即可。

        如果是对外API接口函数,需要提供给外部使用,需要遵守如下格式:

        【UNI_模块名称_函数名称】

        模块名称和函数名称,所有单词首字母大写,并且遵循如上规则,举例如下:

        void *UNI_MQTT_Create(UniDevinfo *pDevinfo);

        int UNI_LwM2M_Register(void *pClient, uint32_t timeoutMs);

1.3 变量的命名规则

        注:下文提及的单词,指具有实际含义的一个英文单词或中文拼音的完整拼写或者缩写,比如Response、Rsp。

        1.变量命名规则主体上采用“骆驼命名法”,即采用:第一个单词首字母小写,余下的单词首字母大写,使用一个大写字母来标记逻辑断点,举例如下:

        char  moduleTime[14] = {0x00};

        int   voltage = 0;

        2.如果为了区分模块层次、逻辑层次,或者使用的单词个数比较多,可以使用下划线进行断开,举例如下:

        char subTopic_EventBatchReply[100] = {0x00};

        char subTopic_ServicePubReply[100] = {0x00};

        3.对于指针、构造类型的变量,为便于区分基础类型的变量,在规则1和2基础上,增加前后缀来区分命名。

        4.指针类型变量

        命名时前缀增加小写字母p(一重指针)或者pp(二重指针),剩余的单词首字母大写,举例如下:

        void *pClient = NULL; 

        void **ppDataBuff = NULL;

        5.结构体、共用体、枚举类型变量

        命名时前缀增加小写字母t,剩余的单词首字母大写,如果碰到是指针类型,为代码简洁考虑,可以省略t,举例如下:

        ShadowProperty  tProVoltage;

        ShadowProperty *pProperty;

        6.结构体、共用体、枚举类型名称

        结构体、共用体、枚举是构造类型,所以会有类型名称的定义。

        类型名称,要求所有单词首字母大写,后缀加上“-t”,而使用typedef 重命名的类型名称,要求所有单词首字母大写,没有后缀。两者命名完全一致,只是区别在是否带后缀。典型的类型名称定义如下:

        typedef struct ShadowProperty_t

        {

        char            *pkey;

        ShadowDatatype   tDataType;  

        void            *pReportData;

        int              reportDataLen;

        void            *pDesireData;

        int              desireDataLen;

        }ShadowProperty;

        typedef enum ShadowDatatype_t

        {

        SHADOW_NULL,

        SHADOW_STRING,

        SHADOW_INT,

        SHADOW_FLOAT,

        SHADOW_BOOL,

        }ShadowDatatype;

        枚举类型的内部变量是常量,要求全部大写,可以使用下划线分断。

        7.全局变量和静态变量

全局变量需要使用“g_”开头,剩余的单词首字母大写。

静态变量需要使用“s_”开头,剩余的单词首字母大写。

如果既是全局变量,又是静态变量,需要使用“gs_”开头。

举例如下:

char g_ProSetMsgID[20] = {0x00};

static char s_SubTopic[100] = {0x00};

        8.对常量命名,要求常量名用大写,可以使用下划线分断。

        9.项目特别定义

        在项目功能开发时,变量分为内部使用变量、外部使用变量(如全局变量、常量等)、对接开放的构造体(结构体、共用体、枚举)类型。

        如果是内部使用变量遵循如上规则即可。

        如果是外部使用变量、构造体类型等,需要遵守如下格式:

        【Uni+变量名称或者类型名称】、【UNI_常量】

        举例如下:

        全局变量:char g_UniDevAuthStr[65] = {0x00};

        构造体类型:

        typedef struct

        {

        char productKey[UNI_PRODUCT_KEY_LEN+1];

        char productSecret[UNI_PRODUCT_SECRET_LEN+1];

        char deviceKey[UNI_DEVICE_KEY_LEN+1];

              char deviceSecret[UNI_DEVICE_SECRET_LEN+1];

       char deviceToken[UNI_DEVICE_TOKEN_LEN+1];

              int  loginMod;

              int  firstReg;       

                int  tlsMod;

        }UniDevinfo;

        常量:UNI_DEVICE_TOKEN_LEN

1.4 AT命名规则

        AT接口按照标准规范制定,需要列出AT功能的测试、查询、设置和执行的格式,可能的响应,最大响应时间及使用举例,如下图举例:

        cmd的命令规则:

        UNI+模块命名+功能名称,模块名称和功能名称遵循标准的AT命名规则。

命令类型

命令

可能的响应

测试命令

AT+=?

查询命令

AT+?

设置命令

AT+=[,[,[...]]]

执行命令

AT+

最大响应时间

示例


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部