关于变量和函数命名的一种简单好用规则
最近在整理一份别人交接过来的代码,因为这份代码经手了若干个人,里面的变量和函数命名各式各样,还缺少很多注释,看得我头皮发麻,所以在梳理代码的过程中总结了一种简单好用的命名规则
点击查看代码
#ifndef GENERAL_DEF_H
#define GENERAL_DEF_H
/* 统一命名规则的好处
* 1、只需要输入开头几个字母,VSCODE就可以弹出相关的数据,不需要靠记忆再到具体的文件中查找
* 2、代码风格统一,自己容易看懂,别人也容易看懂
*/
/* 枚举定义命名以e_开头(enum缩写),后加枚举名字
* 如果属于标志位或者状态位,此时可以自定义一个分类名字,例如以e_FLAG开头
* 当以后有多种e_FLAG时,我们只需要输入e_FLAG,VSCODE就会自动弹出相关的枚举
* 枚举成员命名,用e_后面的字符串作为开头,后面加具体的名字(单词之间加下划线,每个单词首字母大写)
* 枚举变量命名,直接把枚举定义的名字改为每个单词首字母大写
*/
typedef enum
{
Flag_Boot_Run_Stage_NULL = 0, // BOOT初始状态
Flag_Boot_Run_Stage_Start, // BOOT开始
Flag_Boot_Run_Stage_Ing, // BOOT运行中
Flag_Boot_Run_Stage_Finish, // BOOT结束
} e_FLAG_BOOT_RUN_STAGE; // BOOT的运行状态
typedef enum
{
Flag_App_Run_Stage_NULL = 0, // APP初始状态
Flag_App_Run_Stage_Start, // APP开始
Flag_App_Run_Stage_ING, // APP运行中
Flag_App_Run_Stage_Finish, // APP结束
} e_FLAG_APP_RUN_STAGE; // APP的运行状态
e_FLAG_APP_RUN_STAGE e_Flag_App_Run_Stage = Flag_App_Run_Stage_NULL; //枚举变量命名
#define u8 unsigned char
#define u16 unsigned short int
#define u32 unsigned int
/* 结构体定义以s_开头(struct缩写),后加结构体名字
* 其余使用方法和枚举相似,也可以按照自己需要加一个分类,如s_DATA表示与数据格式有关的结构体
*/
typedef struct
{
e_FLAG_BOOT_RUN_STAGE Flag_Boot_Run_stage; // BOOT的运行状态
u8 Boot_data; // BOOT的数据
} s_DATA_BOOT_VALUE; // BOOT中使用的数据
typedef struct
{
e_FLAG_APP_RUN_STAGE Flag_App_Run_stage; // APP的运行状态
u8 App_data; // APP的数据
} s_DATA_APP_VALUE; // APP中使用的数据
/* 其余变量命名格式,以下划线将各个单词分隔开,各个单词首字母大写
* 1、全局变量命名,以G_开头(Global缩写)
* 2、局部变量命名,以Tmp开头(Temporary缩写)
* 3、标志位或者状态位,以Flag_开头,如果可以用枚举定义则以e_Flag开头
*/
/* 函数命名格式
* 1、获取数据的函数,以Get_开头
* 2、设置数据的函数,以Set_开头
* 3、放在T1定时器中断中使用的函数,以IRQ_Handle_Timer1_开头
3.1、也可以具体到这个定时器的定时时间,如1ms的T1定时器,IRQ_Handle_Timer1_1ms_
* 4、放在串口1中断中使用的函数,以IRQ_Handle_USART1_开头
* 5、放在main函数的while循环中使用的函数,以Main_While_Handle_开头
* 6、业务代码,以功能开头。如在屏幕上显示文字,以DisTxt_开头,在屏幕上显示图标,以DisIcon_开头
*/
#endif //END-----GENERAL_DEF_H
在VSCODE中只需要输出开头几个字母,软件就会自动弹出开头相同的声明、定义,效果如下图所示