项目开发—变量规范

常量规范 样例
常量名用大写,当多个单词组合需要加"_"下划线 #define DRV_INDEX    /* 驱动的索引 */
所有的unsigned类型常量需要加后缀UL #define BUF_NUM_MAX      /* 最大缓存数 */
避免使用数字,应该使用有意义的枚举或者宏代替
常量数据要加const,若仅本文件使用可加static修饰 const uint8_t g_Data[] ={0.1};
变量规范 样例
变量命名建议使用小驼峰,必要时加下划线 errorCnt、read_Register_Addr
尽量避免使用全局变量,不滥用全局变量
仅在一个函数内使用的全局变量,在函数内定义使用static
+变量
static uint16_t s_Distance =0;
全局变量仅在一个文件中使用,也要加static修饰
外部变量应该声明在唯一的文件中
统一使用工程中一套基本的数据类型 uint8_t、uint16_t、uint32_t等
全局变量一般g最为前缀 g_MaxSize、g_Flag
全局变量或局部指针变量的前缀还需要加指针前缀p uint16_t gp_Min、uint8_t *p_MaxSize
C++中类的成员变量需要加m前缀 uint8_t m_ReadFlag
不允许在作用于范围之外使用局部变量地址
指针变量*靠近变量名 uint8_t *p_Data
不建议使用三重及以上指针
变量定义尽量对齐 uint8_t  *p_Data1;
uint8_t  *p_Data2;
uint8_t   m_Data3;
不用类型或含义的变量之间加空行分割开
变量有初始化则赋值=左右需要使用空格对齐 uint16_t  g_LargeCnt           = 10;
uint16_t  g_ShortData         =  0;
uint32_t  g_MiddleAverage =  5;
不使用TAB缩进,统一将TAB修改为4个空格
去除程序中没用的全局和局部变量等
需要考虑大小端问题
要不被编译器优化、每次都需要重新读此变量值,
尤其是寄存器值,而不是读缓存值,需要在变量前加
volatile
结构体变量需要左对齐且距离起始位置4个空格
结构体内变量命名用小驼峰 typedef struct Gpio_Def
{
    uint8_t       valueLen;
    struct *List nextList;
}
enum内部成员变量全部大写 enum Signal
{
   S_ONE  =0,
   S_TWO =1
}
类型名使用大驼峰,两个字符以上加下划线,且需要加上前缀结构体s_XX, 联合体u_XX,枚举e_XX typedef struct Gpio_Def
{
    uint8_t       valueLen;
    struct *List nextList;
}s_Gpio_Def
建议定义变量时初始化
局部指针变量一定初始化,一般初始化为NULL或其他有意义值
对于指针变量需要进行有效性判断 指针判空等
建议枚举内成员赋值要么对第一个变量赋值,要么全部变量都赋值
枚举的列表中,最后变量结束不加, enum Signal
{
   S_ONE =0,
   S_TWO
}
不要使用结构体与结构体直接赋值
不要使用结构体传值,多用结构体指针传递减少拷贝

你可能感兴趣的:(MCU,C,C语言)