现在的位置: 首页 > 综合 > 正文

《重构》读书笔记(六)——第六章 重新组织函数

2013年09月07日 ⁄ 综合 ⁄ 共 793字 ⁄ 字号 评论关闭

1、在很多情况下,我们使用“提炼函数”这个重构手法时会遇到一个困难,即如何给函数起一个好的名称。所以我们需要在函数名称上下功夫,多积累经验。P116 提炼函数

2、函数应该尽量选择单一返回值。P116 提炼函数

3、间接性可能带来帮助,但非必要的间接性也总是给人不舒服。P117内联(即消除)函数

4、默认情况下,我们应该总是将临时变量定义为final(C++中为const). P124引入解释性变量

注意:我通常还会在另一种情况下使用这个重构手法,当我需要引用一个 map 或 hastabel 的key或value (特别是通过迭代器)时,为了使代码更易读,我会选择将key或value赋给一个临时性变量。

5、 “一个实体只能有一个责任”!因此,函数中的变量应该只承担一个职责。如果一个变量在函数中被赋值了多次,则说明它承担了不只一个责任。P128分离临时变量

6、移除对参数的赋值:对输入参数赋值通常不是一个好做法。当然,对于使用“出参数”的语言(例如C++),我也会尽量少使用出参数。P132移除对参数的赋值

注意:请尽量只以return方式返回一个值。如果需要返回的值不止一个,那么看看是否可以把需要返回的一大堆数据变成一个对象进行返回,或者干脆为每个返回值设计对应的一个独立函数。

7、以函数对象取代函数(Replace Method With Method Object)几乎可以拆解任何大型函数。P135以函数对象取代函数

注意:当然, Replace Method With Method Object重构手法产生的新类通常只有一个实例(对象),这和《代码大全》P146页中“只有一个实例的类是值得怀疑的”相悖。暂且,我们将之看作一个特例吧。疑问

8、 随着对问题的更多了解,我们往往会发现,在原先的做法之外,还有更简单的解决方案。这时我们必须有壮士断腕的豪气,删掉旧算法,使用新算法。P139替换算法

抱歉!评论已关闭.