Clean Code——命名

在编程中取一个好名字很花时间,可是花去的时间绝对物有所值,笔者的mentro说过:“你写代码所花去的时间必定远小于未来别人读你代码所花去的时间,因此不要给别人添麻烦。”命名就是不给别人也是不给本身添麻烦的第一步。笔者在读完《Clean Code》的第二章后,将命名的要点总结为两点:精确、具体。编程

精确

命名应当精确,变量、函数或者类的名称应该回答了全部的大问题,它应该告诉读者,它为何会存在,它要作或者作了什么事,它应该如何使用,而不是用注释来体现这些。那么如何作到精确?笔者认为,假如在项目中作到命名的单词与读者脑海的概念造成一对一的映射,便作到了命名的精确。markdown

单词---->概念

  • 避免 单词---->零个概念 这一状况

要避免上述状况就须要在命名时不要说废话,好比以数字作区别(a一、a二、a3)就彻底没有提供正确信息,再好比variable出如今变量名中、table出如今表名中都是在说废话。app

  • 避免 单词---->多个概念 这一状况

要避免上述状况就须要作到避免思惟映射,不要让读者把名称翻译为他们熟知的另外一种概念,也不能一词多意。好比在多个类中有add方法表示经过增长或链接两个现有的值得到新值,假如要写一个新方法表示把单个参数放到集群中,那么这个方法就不能使用add命名,而应该用insert或者append。函数

概念---->单词

  • 为每一抽象概念选一个词

若是在多个类中给同种方法命名确实用了fetch、get和retrieve等多个同义词,就会让读者产生困惑。因此给每一个抽象概念选一个词而且一以贯之。fetch

具体

精确作的是把命名单词与概念造成一对一映射,而具体则须要把这种一对一映射作的更好,而不是读者读了命名以后脑海中一片混沌。spa

添加有用的语境

假若有名为firstName、lastName、street、houseNumber、city这些变量,它们在一块儿时明显构成了一个地址。不过当它们单独出现时就没法推断它们是地址的一部分。因此能够添加前缀为addrFirstName、addrLastName、addrState等,以提供语境。固然,假如可以建立一个名为Address的类则更好。翻译

使用可读出来的名字

编程是个社会活动,若是名称读不出来,那么讨论的时候就会有些尴尬。并且,使用可读出来的名字也更容易让读者留下印象。code

使用可搜索的名字

单个字母名称和数字常量很难在一大片代码中找出来。找MAX_CLASS_PER_STUDENT比搜索数字7容易太多了。因此可以使用搜索得到准确结果的名字才是一个合格的名字。orm

相关文章
相关标签/搜索