#代码整洁之道 - 阅读笔记(一)
近期参与培训CICD,以及阅读代码整洁之道这本书,记录下学习过程。
代码整洁之道共分为三个部分:
此次读书笔记从基础开始记录:第一部分 - 整洁代码
在这一章节中,提出了一个非常有用的话题:什么样的代码是整洁的代码?本章从要有代码 - 糟糕的代码 - 混乱的代价引入,参考多种著名工程师的理解,作者认为代码包括:变量名、函数、类,整洁代码可以从:整洁变量名、整洁函数、整洁类进行详细分析。
##整洁变量名
变量名包括:变量、函数、参数、类、封包、目录、jar包、war包等,为这些命名时,需要遵循的规则有:
针对于上述规则,对几点进行特殊说明:
###2.1 名副其实
变量、函数或类的名称要求已经答复所有的大问题,该告诉阅读者:为什么存在,做什么事,该怎么用。如果名称需要注释,那就不算名副其实,比如:
名称d什么也没有说明,应该选择指明了计量对象和计量单位的名称。如:
选择体现本意的名称,能更容易理解和修改代码。
比如:
该代码中的getThem、list1、theList都不能表达具体业务含义,应该将其改为更有意义的代码,比如:
仅仅将代码变量的命名进行修改,读起来的时候清晰了很多。
###2.2 避免误导
以同样的方式拼写出同样的概念才是信息。拼写前后不一致的就是误导。举例说明误导性错误的例子,是以小写字母l和大写字母O做变量名,尤其是组合使用时。
问题在于它们看起来完全像是常数1和0。
###2.6 避免使用编码
编码太多了,不要自找麻烦。把类型或作用域编进名称里面,增加了阅读的负担,需要阅读该代码时还要了解另外的编码。
2.6.1 成员前缀
不必用m_前缀标明成员变量,应当把类和函数做的足够小,消除对成员前缀的需要。应该用如下的变量进行命名,
而不是用m_des进行命名。
2.6.2 接口和实现
有时也会出现采用编码的特殊场景。比如,你在做一个创建形状用的抽象工厂(Abstract Factory)。该工厂是一个接口,要用具体类来实现。用来命名:IshapeFactory和ShapeFactory吗?不要加修饰的接口。签到字母 I 被滥用到了说好听点是干扰,说难听点就是废话的程度。不要让用户之道我给他们的是接口,只让他们知道是ShapeFactory。如果接口和实现必须选一个编码的话,可以选择:ShapeFactoryImp,都比对接口名称编码来得好。
2.11 使用解决方案领域名称
只有程序员才会读代码。所以,尽量用计算机科学术语、算法名、模式名、数学术语来命名。依据问题所涉及领域来命名可不算是聪明的做法,因为不该让协作者老是跑去问客户每个名称的含义,虽然他们早该了解其概念。
对于熟悉访问者模式的程序来说,名称AccountVisitor富有意义。那个程序员不知道JobQueue的意思呢?程序员要做太多技术性工作,给这些变量取个技术型的名称,通常是最靠谱的做法。