第二章 有意义的命名
2017-08-08 本文已影响18人
Dl_毛良伟
避免误导
例如:
- 不要用accountList来指定一组账号,除非它真的是List类型,可以使用accounts或者accountGroup
- 提防使用不同之处较小的名称。
如XYZControllerForEfficientHandlingOfStrings和XYZControllerForEfficientStorageOfStrings。
有意义的区分
例如:
- 使用Product ProductInfo ProductData来表示3个不同类的话是很难区分的,因为Info和Data意义上并没有太大的区别,容易混淆,类似的还有moneyCount和money
nameString真的比name更加清晰吗? - 废话是另一种没意义的区分。Prodeuct,ProductInfo或ProductData,名称不同,意思无区别。 废话都是冗余,Variable一词永远不应出现在变量名中,Table一词永远不应出来在表名中。
再如:
getActiveAccount();
getActiveAccounts();
getActiveAccountInfo();
moneyAmount与money
customerInfo与customer
accountData与account
theMessage与message
名副其实
说起来很简单。选个好名字需要花时间,但省下的时间比花掉的多。注意命名,一旦有好的命名,就换掉旧的。
int d;// 消失的时间,以日计。
int elapsedTimeInDays;
使用便于搜索的的名称
单个字母或者数字常量是很难在一大堆文章中找出来。比如字母e,它是英文中最常用的字母。长名胜于短名称,搜得到的名称胜于自编的名称。 窃以为单字母的名称仅用于短方法中的本地变量。名称长短应与其作用域大小相对应。
for (int j = 0; j < 34; j++){
s += (t[j]*4)/5;
}
与
int readDaysPerIdealDay = 4;
final int WORK_DAYS_PER_WEEK = 5;
int sum = 0;
for (int j = 0; j < NUMBER_OF_TASKS; j++){
int realTaskDays = taskEstimate[j] * realDaysPerIdealDay;
int realTaskWeeks = realTaskDays / WORK_DAYS_PER_WEEK;
sum += realTaskWeeks;
}
类名应该是名词或短语
像Customer,Account,避免使用Manager,Processor,Data或者Info这样的类名。类名不应当是动词。
方法名应该是动词或动词短语
如postPayment ,deletePage或Save,属性访问、修改和断言应该根据其值来命名,并加上get,set,is这些前缀。