欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第二章 有意义的命名

程序员文章站 2022-06-07 12:28:13
...

避免误导


例如:

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