《代码整洁之道》笔记

第二章 有意义的命名

软件中随处可见命名。所以,命名是否得当直接关系的代码的可读性。在这一章中作者给出了一些命名的建议和规范。我记录和总结了一下自己有感触和能用的上的一些规范。

1.命名要有意义:在书中,作者给出了:名副其实、避免误导、做有意义的区分、使用读得出来的命名等建议。总结之后,发现就是要有意义,能让初次读代码和维护代码的人员明白命名的意思。作者还提出,使用便于搜索的命名,也就是说,长命名要好于短命名。

2.类名:类名不要使用动词。

3.方法名:方法名应当使用动词或动词短语。

 第三章 函数(方法)

1.函数应该短小:函数的缩进层级最好不要一层或两层。

2.只做一件事:判断函数是否只做了一件事的方法之一:看是否还能从函数中再拆分出一个函数出来。

3.每个函数一个抽象层级

4.函数参数:函数的参数越少越好,当函数的参数大于3个时,就可以考虑用其他的数据结构来代替这些参数了。

5.避免重复

重复可能是软件中一切邪恶的根源

第4章 注释

注释最多就是一种必须的「恶」,足够好的代码不需要注释其他人也能够看懂。而且注释也不会使原本糟糕的代码变好。所以,尽量要使用代码来阐释其行为。

好的注释可有这些内容:法律信息、提供有用的信息、对意图的解释、警示和关于公用API的解释(例如Javadoc)。

坏的注释常常会有这些内容:喃喃自语、误导性注释、日志式注释、大括号后的注释、注释掉的代码(这个可以由版本控制搞定)和非公用API的Javadoc。

第5章 格式

垂直格式:大多数文件的行数的最大值应在200~500行(这并非是不可违背的原则);封包声明、导入声明和每个函数之间都有空白行将它们隔开,有表示完整思路的代码也可用空白行隔开;关系密切的概念应该相互靠近;类的实例变量应该声明在类的顶部;被调用的函数应该放在执行调用函数的下面(Pascal、C和C++中则恰好相反)。

横向格式:代码行的长度的上限在100~120个字符;使用空格将关系紧密的事物连接在一起,同时也用空格把相关性较弱的事物分开;

第6章 对象和数据结构

隐藏实现关乎抽象;乱加取值器和赋值器是最坏的选择;The Law of Demeter 认为模块不应该了解它所操作对象的内部情况;诸如,ctxt.getOptions().getScratchDir().getAbsolutePath() 这类连串的调用常被认为是肮脏的代码风格,应该避免;数据传送对象DTO(Data Transfer Objects)是一种只有公共变量二,而没有函数的类,这种类一种十分简练的数据结构,通常用于数据通信。

——To be continue