写点什么

重读《重构 2》- 搬移函数

用户头像
顿晓
关注
发布于: 2021 年 04 月 22 日
重读《重构2》- 搬移函数

8.1 搬移函数(Move Function)

搬移函数最直接的一个动因是,它频繁引用其他上下文中的元素,而对自身上下文中的元素却关心甚少。此时,让它去与那些更亲密的元素相会, 通常能取得更好的封装效果,因为系统别处就可以减少对当前模块的依赖。


造成这样的一个主要原因是:我们对模块设计的理解并不是一成不变的,随着对代码的理解加深,我会知道那些软件要素如何组织最为恰当。


这样说可能抽象了些,我自己的习惯是当代码被动修改时,考虑搬移函数,让代码能灵活使用新的修改。

即当需求变动,如增加功能、修改功能时,原有代码就会被动修改,这时原有代码就会被拆分成最少 2 块:要增加、修改的部分和不变的部分。

接下来再看,新增、修改的功能,在当前函数上下文中的关系,最少可以分为 3 种:

  • 和上下文中的其他功能是平级的,只需在合适的位置插入代码即可;

  • 属于上下文中某个功能的子功能,在子功能函数中修改即可,如果子功能没有封装成函数,则封装出来,并保证调用的上下文保持不变;

  • 包含了不属于上下文的功能,此时要到当前上下文的调用处来做修改,保证当前上下文的函数不做修改,在调用处新增函数或增加判断逻辑来修改。


还有一种情况就是主动修改,即随着软件上线后并经过验证,稳定性得到了保证,同时需求也稳定了,可以考虑在代码可维护、同类功能开发效率上进行重构。如实现配置化开发

发布于: 2021 年 04 月 22 日阅读数: 11
用户头像

顿晓

关注

因观黑白愕然悟,顿晓三百六十路。 2017.10.17 加入

视频号「编程日课」 知识星球「俺的死党顶」

评论

发布
暂无评论
重读《重构2》- 搬移函数