《代码整洁之道》第二章

14 Dec 2021

Reading time ~10 minutes

2.1 介绍

软件中随处可见命名。我们命名、命名,不断命名。既然有这么多命名要做,不妨做好它。

2.2 名副其实

名副其实说起来很简单。注意命名,而且一旦发现由更好的名称,就换掉旧的。

变量、函数或类的名称应该已经答复了所有的大问题。

我们应该选择指明了计量对象和计量单位的名称。

选择体现本意的名称能让人更容易理解和修改代码。

2.3 避免误导

程序员必须避免留下掩盖代码本意的错误线索。应当避免使用与本意相悖的词。

提防使用外形相似度较高的名称。

以同样的方式拼写出同样的概念才是信息。拼写前后不一致就是误导。

误导性名称真正可怕的例子,是用小写字母l和大写字母O作为变量名,尤其是在组合使用的时候。

2.4 做有意义的区分

如果程序员只是为满足编译器或解释器的需要而写代码,就会制造麻烦。

以数字系列命名(a1、a2…aN)是依义命名的对立面。

废话时另一种没意义的区分。

废话都是冗余。

2.5 使用读得出来的名称

人类长于记忆和使用单词。

如果名称读不出来,讨论的时候就会像个傻鸟。

2.6 使用可搜索的名称

长名称胜于短名称,搜得到的名称胜于用自造编码代写就的名称。

窃以为单字母名称仅用于短方法中的本地变量。名称长度应与其作用域大小相对应。若变量或常量可能在代码中多处使用,则应赋予其便于搜索的名称。

2.7 避免使用编码

把类型或作用域编进名称里面,突然增加了解码的负担。

2.7.1 匈牙利语标记法

它们增加了修改变量、函数或类的名称或类型的难度,它们增加了阅读代码的难度,它们制造了让编码系统误导读者的可能性。

2.7.2 成员前缀

人们会很快学会无视前缀(或后缀),而只是看到名称中有意义的部分。代码读得越多,眼中就越没有前缀。最终,前缀变作了不入法眼的废料,变作了旧代码的标志物。

2.7.3 接口和实现

前导字母I被滥用到了说好听点是干扰,说难听点根本就是废话的程度。

2.8 避免思维映射

不应当让读者在脑中把你的名称翻译为他们熟知的名称。

聪明程序员和专业程序员之间的区别在于,专业程序员了解,明确是王道。专业程序员善用其能,编写其他人能理解的代码。

2.9 类名

类名和对象名应当是名词或名词短语。应避免使用Manager、Processor、Data或Info这样的类名。类名不应当是动词。

2.10 方法名

方法名应当是动词或动词短语,属性访问器、修改器和断言应该根据其值命名,并依Javabean标准加上前缀get、set和is。

重构构造器时,使用描述了参数的静态工厂方法名。

可以考虑将相应的构造器设置为private,强制使用这种命名手段。

2.11 别抖机灵

如果名称太耍宝,那就只有同作者一般有幽默感的人才能记住,而且还是在他们记得那个笑话的时候才行。

言到意到。意到言到。

2.12 每个概念对应一个词

给每个抽象概念选一个词,并且一以贯之。

2.13 别用双关语

避免将同一单词用于不同目的。

代码作者应尽力写出易于理解的代码。

2.14 使用解决方案领域名称

记住,只有程序员才会读你的代码。

程序员要做太多技术性工作,给这些事起个技术性的名称,通常是最靠谱的做法。

2.15 使用源自所涉问题领域的名称

如果不能使用程序员熟悉的术语来给手头的工作命名,就采用从所涉问题领域而来的名称吧。

2.16 添加有意义的语境

你需要用命名良好的类、函数或名称空间来放置名称,给读者提供语境。

2.17 不要添加没用的语境

只要短名称足够清楚,就比长名称好。别给名称添加不必要的语境。

精确正是命名的要点。

2.18 最后的话

起好名字最难的地方在于需要良好的描述技巧和共有文化背景。



Reading NotesClean Code Share Tweet +1