有意义的命名
2.2 名副其实
注意命名,一旦发现有更好的名称,就替换掉旧的。
变量、函数或类的名称应该可以告诉你:为什么会存在,做什么事,应该怎么用。不需要用注释来补充。
2.3 避免误导
避免留下掩藏代码本意的错误线索,比如关键字、专有名词等。
根据名称不会做出错误的判断,比如xxxList,而实际上该变量不是List类型。
不要使用看起来很相似的名称。
2.4 做有意义的区分
比如变量moneyAccount和money,customerInfo和customer,accountData和account,又如方法:
getActiveAccount();
getActiveAccounts();
getActiveAccountInfo();
意思基本一样,无法有效区分。要区分名称,就要以读者能鉴别不同之处的方式来区分。
2.5 使用读的出来的名称
名称尽量使用单词,容易记忆,也容易知晓意思。比如genymdhms,你能想象出来这是生成日期的变量吗?如果使用generationTimestamp,很容易就知道什么意思吧。
2.6 使用可搜索的名称
尽量不要使用单字母和数字常量(单字母名称仅用于短方法中的本地变量)。名称长短应与其作用域大小相对应。 尤其是在多处使用的变量或常量,更应该赋予其便于搜索的名称。
2.9 类名
类名和对象名应该是名词或名词短语,不应当是动词。
2.10 方法名
方法名应当是动词或动词短语。
重载构造器时,使用描述 了参数的静态工厂方法名。如Complex fulcrumPoint = Complex.FromRealNumber(23.0);
通常好于
Complex fulcrumPoint = new Complex(23.0);
2.12 每个概念对应一个词
给每个抽象概念选一个词,并且一以贯之。例如,使用fetch、retrieve和get来给多个类中的同种方法命名。函数名称应当独一无二,而且要保持一致。
2.13 别用双关语
避免将同一单词用于不同目的。比如,多个类中都有add方法,该方法通过增加或连接两个现存值来获得新值。假设要写个新类,该类中有一个方法,把单个参数放到群集中,如果这个方法也叫做add,实际上它却是表达了不同的语义。
2.16 添加有意义的语境
由于很少有名称能自我说明,所以需要用良好命名的类、函数或名称空间来放置名称,给读者提供语境。如果没这么做,给名称添加前缀也是一个不错的办法。比如state和addrState。
2.17 不要添加没用的语境
只要短名称足够清楚,就要比长名称好。