项目代码命名规范

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+<cmd>=?

查询命令

AT+<cmd>?

设置命令

AT+<cmd>=<p1>[,<p2>[,<p3>[...]]]

执行命令

AT+<cmd>

最大响应时间

示例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SpringBoot项目的结构命名规范如下所示: 1. 最开始生成的目录: - .idea:存放项目的配置信息。 - .mvn:存放与mvnw相关文件,用于统一Maven版本管理。 - src:存放项目的源码和资源文件。 - target:存放项目构建后的文件和目录、jar包、war包、编译的class文件。 - .gitignore:git忽略规则。 - blog.iml:IntelliJ IDEA的工程配置文件。 - HELP.md:帮助文档。 - mvnw:与Linux执行mvnw命令有关。 - mvnw.cmd:与Windows执行mvnw命令有关。 - pom.xml:项目对象模型(核心重要)。 2. 标准开发级目录: - src/main:主目录。 - src/test:测试目录。 3. src/main目录下的子目录: - src/main/java:存放源代码文件。 - src/main/resources:存放各类静态资源文件、配置文件、页面文件等。 - src/main/resources/static:用于存放各类静态资源(css,js等)。 - src/main/resources/templates:用于存放模板文件(mappers等)。 - src/main/resources/application.properties:用于存放程序的各种依赖模块的配置信息。 4. src/test目录下的子目录: - src/test/java:存放测试代码文件。 5. MVC三层结构的文件夹描述: - dao(mapper):Dao层,负责与数据库打交道,具体到对某个表、某个实体的增删改查。 - service:服务层,封装Dao层的操作,使一个方法对外表现为实现一种功能。 - controller:业务控制层,负责接收数据和请求,并且调用Service层实现业务逻辑。 - service/Impl:服务层实现,service装的是接口,Impl装的是实现接口。 6. 必要层: - pojo:实体层。 7. 重要层: - utils:工具类。 - constant:常量接口类。 - config:配置信息类。 - vo:数据传输类。 综上所述,SpringBoot项目的结构命名规范包括最开始生成的目录、标准开发级目录、MVC三层结构以及其他必要层和重要层的命名规范。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [springboot项目结构命名规范](https://blog.csdn.net/qq_51184516/article/details/126681931)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值