现实生活中,我们都知道名字的重要性,对此,还有些笑点由此产生。同理在我们的代码中也是适用的,有个好的名称,读你代码的人(包括你自己)都会开心。这其中包括参数名、文件、类,函数的命名。
好的名字应该有以下特点:
- 可以由名生意。根据名字可以看出它为什么存在,它做什么事情,应该怎么用。假如名称还需要注释来补充,那就不名副其实了。
- 有意义的区分。常见的有以数字系列命名(比如a1、a2、a3,,,),这都是不可取的
- 用可读的参数代替数字会不会更好点呢。比如
for(int i=0;i<4;i++){
}
#define NUM_OF_TASKER 4
for(int i=0;i<NUM_OF_TASKER;i++){
}
- 避免使用双关语。
- 类名和对象名应该是名称或者名称短语
- 方法名应该是动词或者动词短语,比如deletePage或者save.属性访问器可以加上get、set、is等修饰语。
- 使用合适的匈牙利命名规则
匈牙利命名法主要是为变量加上某种前缀以标识这个变量的类型,或是一种方法的功能。其基本原则是:变量名=属性+类型+对象描述。
比如:在描述类型方面:指针p,函数fn,长整型 l,布尔b,浮点型(有时也指文件)f,双字 dw,字符串 sz,短整型 n,双精度浮点 d,无符号 u……等等。关于更多的命名规范,请参见附录。
不要害怕改名,尽管取个好名字会多花些时间,但是长远看,完全是值得的。假如一旦有了更好的名字,尽量马上进行修改。
分享一个非常优秀的文章,译文:《编程中的命名设计那点事》原文:《Naming Things in Code》
附录、匈牙利命名法:
a Array 数组
b BOOL (int) 布尔(整数)
by Unsigned Char (Byte) 无符号字符(字节)
c Char 字符(字节)
cb Count of bytes 字节数
cr Color reference value 颜色(参考)值
cx Count of x (Short) x的集合(短整数)
dw DWORD (unsigned long) 双字(无符号长整数)
f Flags 标志(一般是有多位的数值)
fn Function 函数
g_ global 全局的
h Handle 句柄
i Integer 整数
l Long 长整数
lp Long pointer 长指针
m_ Data member of a class 一个类的数据成员
n Short int 短整数
p Pointer 指针
s String 字符串
sz Zero terminated String 以0结尾的字符串
tm Text metric 文本规则
u Unsigned int 无符号整数
ul Unsigned long (ULONG) 无符号长整数
w WORD (unsigned short) 无符号短整数
x,y x, y coordinates (short) 坐标值/短整数
v void 空