目前主流的C/C++命名风格有两种:一种是Windows风格的匈牙利命名法,主要是采用类型前缀 + 变量名首字母大写,另一个就是Unix/Linux命名习惯。我自己采用的是基于Unix的变种,融合了匈牙利命名法的一些优点,在这里分享给大家。
变量名的组成:(模块名) + (作用域) + (类型前缀) + 变量名 + (变量名后缀),解释如下:
- 变量名 以小写的英文字母构成,词与词之间用下划线连接,如key_value, data_src; 不可使用数字,不混用大小写;
- 模块名 声明该变量属于的模块,防止模块与模块的命名冲突。如timer_prescalar_value, DMA_channel_name等;
- 作用域前缀 (Scope Prefix) 标注变量的作用域,提高代码可读性:
g_: 全局变量;
n_: 局部变量;
t_: 中间变量;
s_: static静态变量; - 类型前缀 (Type Prefix) 指明变量的数据类型:
ptr_: 指针变量,在程序中临时需要使用指针时,也常简写为p_,如*p_src;
h_: 句柄,如h_file;
n_: 整形,s_: 短整形,l_: 长整形, u_: 无符号整型,可增加数据位数,如u32;
ch_: 字符型变量;
f_: 浮点,d_: 双精度浮点;
b_: boolean;
by_: byte字节型(关注数据的位特性,需要位操作的情况下使用);
reg_: 表示寄存器; - 后缀 (Suffix) 指明变量的性质:
_src: 源,_dst: 目的;
_str: 字符串;
_t: 在声明数据类型时使用,表示为自定义的数据类型,如u32_t;
_st: 表示为结构体;
_buff: 数据缓冲, msg_buff;
_arr, _a, _m: 数组或矩阵;
变量名的取名规则:
- 循环控制变量 i, j, k, m, n,除循环控制外应避免使用这些变量名称;
- 函数名 使用(模块名 + )动词 + 名词的形式,同样小写 + 下划线:sys_find_file(), IO_get_data(). 后者因为IO为专用名词故破例使用大写;
- 类名或结构体名 使用首字母大写加下划线连接:如Mystring, Datetime_type;
- 私有类成员 Private使用下划线_前缀,如_data_src_ptr, _init_module();
- 宏定义或常量 使用全部大写:如MAX_NUMBER, LOOP_NUMBER;
- 缩写 使用能广泛接受的缩写:如add, ans, avg, chk, cnt, col, ctrl, def, del, dst, disp, err, freq, idx, init, len, min, max, mid, msg, num, opt, pos, ptr, recv, res, ret, src, str, sub, num, ts (timestamp), val等。
本网站的所有实例代码和项目程序都将按此命名规范进行编写。
>> 本文章版权归作者所有,如需转载请联系作者授权许可。
>> 原文来自: 云飞机器人实验室
>> 原文地址: C语言 | C/C++变量命名规范
>> 关于我们: 关于云飞实验室
>> 支持我们: 帮助我们可持续发展