Litong's Blog

Work to become, not to acquire.

第2章 有意义的命名

名副其实。

如果名称需要注释来补充,那就不算是名副其实。

选择体现本意的名称能让人梗荣立理解和修改代码。

问题不在于代码的简洁度,而是在于代码的模糊度:即上下文在代码中未被明确体现的程度。

只要简单改一下名称,就能轻易知道发生了什么。

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

如果名称必须相异,那其意思也应该不同才对。

废话是另一种没意义的区分。废话都是冗余。

要区分名称,就要以读者能鉴别之处的方式来区分。

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

单字母名称仅用于短方法中的本地变量。名称长短应与其作用于大小相对应。

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

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

应当把类和函数做得足够小,消除对成员前缀的需要。

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

类名和对象名应该是名词或名词短语,类名不应当是动词。

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

重载构造器时,使用描述了参数的静态工厂方法名。可以考虑将相应的构造器设置为private,强制使用这种命名手段。

Complex.FromRealNumber(23.0) 通常好于 new Complex(23.0)

宁可明确,毋为好玩。言到意到,意到言到。

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

例如,使用fetch、retrieve和get来给多个类中的同种方法命名。

函数名称应当独一无二,而且要保持一致,这样才能不借助多余的浏览就找到正确的方法。

避免将同一单词用于不同目的。遵循”一词一意”。

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

使用解决方案领域名称。

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

优秀的程序员和设计师,其工作之一就是分离解决方案领域和问题领域的概念。

添加有意义的语境。

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

精确是命名的要点。

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