读书笔记--代码整洁之道第三、四章

第三章 函数

1、函数的第一规则是要短小。第二条规则是还要更短小。

if 语句、else 语句、while 语句等,其中的代码块应该只有一行。该行大抵应该是一个函数调 用语句。

2、只做一件事

如果函数只是做了该函数名下同一抽象层上的步骤,则函数还是只做了一件事。

要判断函数是否不止做了一件事,还有一个方法,就是看是否能再拆出一个函数,该函数不仅只是单纯地重新诠释其实现。

要确保函数只做一件事,函数中的语句都要在同一抽象层级上。

3、自顶向下读代码:向下规则

程序就像是一系列TO起头的段落,每一段都描述当前抽象层级,并引用位于下一抽象层级的后续 TO 起头段落。

4、switch 语句

对于 switch语句,我的规矩是如果只出现一次,用于创建多态对象,而且隐藏在某个继承关系中,在系统其他部分看不到,就还能容忍。

5、使用描述性的名称

别害怕长名称。长而具有描述性的名称,要比短而令人费解的名称好。

别害怕花时间取名字。

选择描述性的名称能理清你关于模块的设计思路,并帮你改进之。

命名方式要保持一致。使用与模块名一脉相承的短语、名词和动词给函数命名。

6、函数参数

最好是没有参数,其次分别是一个参数、两个参数,尽量避免使用三个参数,无论如何都不要用三个以上。

6、1单参数函数

对于有输入参数和返回值的函数需写清函数名,并且在上下文一直使用这个函数名。 对于有输入参数而没有返回值的函数(事件)应该让读者很清楚地了解它是个事件。谨慎地选用名称和上下文语境。

对于以输入参数作为输出参数的看,如果函数要对输入参数进行转换操作,转换结果就该体现为返回值。

6.2 标识参数

向函数传入布尔值简直就是骇人听闻的做法。这样做,方法签名立刻变 得复杂起来,大声宣布本函数不止做一件事。----不应向函数传入布尔值

6.3 两个参数

除了向坐标这样两个坐标非常合理的函数外,应尽量将两个参数的函数分为一个参数的函数。

6.4 参数对象

当参数过多时可以将有关联的参数适当的封装成对象。

6.5 无副作用

它会对自己类中的变量做出未能预期的改动。有时,它会把变量搞成向函数传递的参数或是系统全局变量。无论哪种情况,都是具有破坏性的,会导致古怪的时序性耦合及顺序依赖。

6.6 分隔指令与询问

函数要么做什么事,要么回答什么事,但二者不可得兼。

6.7 使用异常替代返回错误码

6.8 抽离 Try/Catch 代码块

函数应该只做一件事。错误处理就是一件事。如果关键字try在某个函数中存在,它就该是这个函数的第一个单词,而且在 catch/finally代码块后面也不该有其他内容。

6.9 别重复自己

要尽量的消除重复

6.10 结构化编程

每个函数、函数中的每个代码块都应该有一个入口、一个出口。遵循这些规则,意味着在每个函数中只该有一个 return 语句,循环中不能有 break 或 continue 语句,而且永永远远不能有任何 goto 语句。

但对于小函数,这些规则助益不大。只有在大函数中,这些规则才会有明显的好处。

7、 如何写好函数

不断的打磨,重写,直到达到上面的要求

第四章 注释

1、注释的恰当用法是弥补我们在用代码表达意图时遭遇的失败

2、不准确的注释要比没注释坏的多

3、有些注释是必须的,也是有利的。但是真正好的注释是想办法不去写的注释。

好的注释:

4、法律信息

5、提供信息的注释

6、提供信息的注释

比如 解释某个抽象方法的返回值

有时管用,但是最好的方法还是改代码

7、对意图的解释

8、阐释

把某些晦涩难明的参数或返回值的意义翻译为某种可读的形式。最好的方法就是直接讲明,但是对于参数或返回值是一个标准库的一部分,或者是你不能修改的代码,注释就会有用。

9、警示

警告程序员会出现某种后果。

10、TODO注释

在源代码中放置要做的工作列表。TODO解释了为什么该函数的实现部分无所作为,将来应该是怎样。需要定期删除

11、放大某种看起来不合理之物的重要性

12、公共API中的Javadoc

如果在编写公共API,就需要为他编写Javadoc

坏注释:

13、喃喃自语

14、多余的注释

15、循规式注释

16、日志式注释

会让模块变的凌乱不堪,应当全部删除

17、废话注释

18、位置标记

如:

//////Action/////////

标记理应全部删除,如果滥用标记栏,将导致沉醉在背景杂音中,将个别注释忽略掉

19、括号后面的注释

可能对于含有长嵌套的函数存在意义,但是当你想写长嵌套的时候,不如缩短函数。

20、归属与署名

源代码控制器是这类信息最好的归属地。

21、注释掉的代码

源代码管理器可以帮我们记住删除的代码,所以我们无需再用注释来标记,删掉即可。

22、HTML 注释

23、非本地信息

如果非要给出注释,请确保他描述了离它最近的代码。

24、信息过多

25、不明显的联系

注释及其描述的代码之间的联系应该是显而易见的。

26、函数头

27、非公共代码的Javadoc





猜你喜欢

转载自blog.csdn.net/Magic1an/article/details/81048493