第二章 有意义的命名

避免误导


例如:

  • 不要用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这些前缀。

你可能感兴趣的:(第二章 有意义的命名)