代码的坏味道(11)——霰弹式修改(Shotgun Surgery)

发布时间:2017-6-24 22:05:49 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"代码的坏味道(11)——霰弹式修改(Shotgun Surgery) ",主要涉及到代码的坏味道(11)——霰弹式修改(Shotgun Surgery) 方面的内容,对于代码的坏味道(11)——霰弹式修改(Shotgun Surgery) 感兴趣的同学可以参考一下。

坏味道——霰弹式修改(Shotgun Surgery)

霰弹式修改(Shotgun Surgery) 类似于 发散式变化(Divergent Change) ,但实际上完全不同。发散式变化(Divergent Change) 是指一个类受多种变化的影响。霰弹式修改(Shotgun Surgery) 是指多种变化引发多个类相应的修改。

特征

任何修改都需要在许多不同类上做小幅度修改。

img

问题原因

一个单一的职责被拆分成大量的类。

解决方法

  • 运用搬移函数(Move Method)搬移字段(Move Field) 来搬移不同类中相同的行为到一个独立类中。如果没有适合存放搬移函数或字段的类,就创建一个新类。
  • 通常,可以运用 将类内联化(Inline Class) 将一些列相关行为放进同一个类。

img

收益

  • 更好的代码组织
  • 减少重复代码
  • 更易维护

img

重构方法说明

搬移函数(Move Method)

问题

你的程序中,有个函数与其所驻类之外的另一个类进行更多交流:调用后者,或被后者调用。

img

解决

在该函数最常引用的类中建立一个有着类似行为的新函数。将旧函数变成一个单纯的委托函数,或是旧函数完全移除。

img

搬移字段(Move Field)

问题

在你的程序中,某个字段被其所驻类之外的另一个类更多地用到。

img

解决

在目标类新建一个字段,修改源字段的所有用户,令他们改用新字段。

img

将类内联化(Inline Class)

问题

某个类没有做太多事情。

img

解决

将这个类的所有特性搬移到另一个类中,然后移除原类。

img

引申阅读

欢迎继续阅读 代码的症与药 系列文章。

上一篇:【SQLServer】记一次数据迁移-标识重复的简单处理
下一篇:iOS开发 获取状态栏的点击事件 - D

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。