2. 有意义的命名
2.2 名副其实
变量、函数或类的名称应该已经答复了所有的大问题。它应该告诉你,它为什么存在,它做什么事,应该怎么用。如果名称需要注释来补充,那就不算名副其实。
2.4 做有意义的区分
ProductData 和 ProductInfo 这两个类名称虽然不同,意思却无区别。Info 和 Data 就像 a、an、the 一样,是意义含混的废话。
废话都是冗余。Variable 永远不应当出现在变量名中。NameString 会比 Name 好吗?难道 Name 会是一个浮点数不成?
2.5 使用读得出来的名称
如果名称读不出来,讨论的时候就会像个傻鸟。
命名时尽量少使用缩写。
2.6 使用可搜索的名称
单字母名称和数字常量有个问题,就是很难在一大串代码中找出来。
找 MAX_CLASSES_PER_STUDENT 很容易,但是找数字 7 就很麻烦了。
同理,e 也不是个便于搜索的好变量名。它是英文中最常用的字母。由此可见,长名称胜于短名称,搜得到的名称胜于用自造编码代写就的名称。
单字母名称仅用于短方法中的本地变量
for (let i = 0; i < n; i++) {
// code
}
2.10 方法名
方法名应当是动词或者短语
2.13 别用双关语
避免将同一单词用于不同的目的。同一术语用于不同概念,基本就是双关语了。
代码作者应尽力写出易于理解的代码,需要大众化的写清楚的平装书模式,而不是那种学者挖地三尺才能明白个中意义的学院派模式。
2.16 添加有意义的语境
很少有名称是能自我说明的。需要有良好命名的类、函数来放置名称,给读者提供语境。如果没这么做,给名称添加前缀就是最后一招了。
例如给一个地址的各种变量:firstName、lastName、street、houseNumber、city。当它们在一起的时候,可以很明确的看出来是一个地址,但是分开只看 lastName,谁能想到这是一个地址的变量呢。因此可以添加前缀 addrFirstName、addrLastName......