Clean Code读书笔记--2.有意义的命名

264 阅读2分钟

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......