OO编程基本功(2)--命名
1. 使用词组作为函数名称,名词作为类名称,描述性的词作为变量名
如果business使用了domain model,类名称通常为model的名称,就是我们domain model里面直接map过来的名称:
Customer
Student
Account
注意,如果出现了XxManager , XXExecutor , XXProcessor 之类的名称,那么要考虑修改design了,因为很可能已经follow过程式的编程思维。
方法名示例
在business 层,方法通常是model发生的动作:
PostPayment();
SubmitOrder();
SaveOrder();
变量名示例
通常,应该尽可能的精确表达出变量所代表的含义:
intelapsedTimeInDays;(而不是Elapseddays或者passedDays)
intdaysSinceCreation;(而不是days)
intdaysSinceModification;(而不是changedDays)
intfileAgeInDays; (而不是fileAge)
2. 不要使用容易引起误导的名字
例如Student[] StudentList 就不是一个好名称, 除非真的是List<Student> 类型,否则最好使用Students,这里可以选择StudentArray 或者Students都是不错的选择.
另外,最好避免使用o 和l,它们和数字1和0看上去非常相似。
3. 使参数的名称有意义
例如
public static void copyChars(char a1[],char a2[]) {
for (int i = 0; i < a1.length; i++) {
a2[i] = a1[i];
}
}
这里的a1和a2,如果不读逻辑,根本不知道代表的是什么,这里比较好的选择是使用source和destination ,使得参数的目的一目了然。
4. 避免缩写和简称
例如chatHistory 写成ch ,让人根本不知道ch代表了什么。任何名称,如果让人需要再mapping一次,就要考虑更换名称了。
5. 同一概念使用统一的词
别忘了,你在完成一个story,别人读代码的时候,就像读一本故事书,读一个类,就像阅读一篇文章,为了保证代码命名的一致性,例如用了Retrieve作为取操作的方法名 就别用Get , 用了Controller作为类名,就别用Manager。
6. 使用programmer 内部词汇作为后缀。
别忘了,所写的代码是给programmer来读,扩展的。因此我们可以使用一些内部词汇作为后缀来增强代码的可读性和类的流畅程度。例如算法相关的可以使用LazyQueue ,模式相关使用了SIMFactory ,AndriodProxy等等。
7. 使用表达统一概念的前缀
例如和地址信息相关的字段:FirstName, LastName, PostalCode , UnitNo , StreetName 等等,当他们一起出现时,我们也许能想到它们共同表达了概念--地址。可是它们单独出现时,FirstName 我们肯定无法猜到它是地址类的一个部分。因此我们可以使用AddrFirstName ,AddrLastName 等等来作为字段名,这样可以有效限制字段的意义就是在表达地址信息的一部分。
OO编程基本功(2)--命名