代码整洁之道——有意义的命名(笔记)

名副其实

选个好名字要花时间,但省下来的时间会比花掉的多。注意命名,而且一旦发现有更好的名称,马上换掉旧的。
变量、函数或类的名称应该已经答复了所有的大问题。它该告诉你,它为什么会存在,它做什么事,应该怎么用。如果名称需要注释来补充,那就不算是名副其实。

避免误导

必须避免留下掩藏代码本意的错误线索,应当避免使用与本意相悖的词,提防使用不同之处较小的名称。真正可怕的是用小写字母l和大写字母O作为变量名,因为它们看起来完全就像是数字1和0。

做有意义的区分

以数字系列命名(a1,a2,。。。)是依义命名的对立面,这样的名称纯属误导,没有提供任何有用的信息;废话也是一种没意义的区分,Variable一词永远不应当出现在变量名中,Table一词永远不应当出现在表名中。如果缺少明确的约定,theMessage和message没区别。要区分名称,就要以读者能鉴别不同之处的方式来区分。

使用读得出来的名称

如果名称读不出来,讨论的时候就会像个傻鸟。直接使用恰当的英语词,而不要傻乎乎的自造词。

使用可搜索的名称

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

避免使用编码

编码已经太多,无谓再自找麻烦。把类名或作用域编进名称里面,徒然增加了解码负担。不必使用m_前缀来标明成员变量。应当把类和函数做的足够小,消除对成员前缀的需要。人们会很快学会无视前缀或后缀,只看到名称中有意义的部分。代码读的越多,眼中就越没有前缀,最后,前缀变成了不如法眼的废料。

避免思维映射

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

类名

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

方法名

方法名应当是动词或动词短语。属性访问器、修改器和断言应该根据其值命名,并依Javabean标准加上get、set和is前缀。重载构造器时,使用描述参数的静态工厂方法。

每个概念对应一个词

给每个抽象概念选一个词,并且一以贯之。如使用fetch、retrieve、get来给多个类中的同种方法命名,你怎么能记得住哪个类的哪个方法?函数名称应当独一无二,而且要保持一致,这样你才能不借助多余的浏览就找到正确的方法。

别用双关语

避免将同一单词用于不同的目的。如果遵循“一词一义”规则,可能在好多类里面都会有add方法,只要这些add方法的参数列表和返回值在语义上等价,就一切顺利。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章