简单易懂读《重构》 - Shotgun Surgery (霰弹式修改)

本文探讨了如何通过重构提升代码的可扩展性和维护性,重点介绍了InlineClass、MoveMethod和MoveField等重构方法的应用场景和步骤,旨在帮助开发者有效应对代码修改难度和工作量增加的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 含义:
    牵一发而动全身,每次遇到某种变化,都必须在不同的类中做出小修改
  • 坏处:
    代码散步各处,不利于扩展和阅读,增加代码修改难度及工作量
  • 目标:
    尽量使某类变化通过某个特定类来处理,避免修改过多类。提升代码可扩展性,减少不必要的工作量。
  • 实现方法:
    • 考虑使用Move Method(搬移函数)Move Field(搬移字段) 把所有需要修改的代码放进同一个类。如果没有合适的类,就新建一个,考虑使用Inline Class(将类内联) 把一系列相关行为放进同一个类,这有可能造成Divergent Change(上篇讲到过)。
    • 此种情况与上篇所述的Divergent Change情况正好相反。

本文涉及的重构方法

Inline Class (将类内联化)
  • 作用:
    把某个做很少事且未来扩展可能性较为低的类合并到另一个类中。清除不必要的类,提升代码质量。
  • 步骤:
  1. 利用Move Method(搬移函数)Move Field(搬移字段) 把源类搬到需要搬到的目标类中
  2. 修改原来类内的引用,调整函数及变量的作用域
  3. 编译,测试。
  • 重构思路:
    把不必要的,做的事过少,并且未来扩展的可能性也较小的类合并到另一个经常引用,或者抽象概念上,可以分为一类的类中。
  • 建议:
    使用前考虑此类未来是否可能进行扩展,咨询同事等确认,以免无效劳动。
Move Field (搬移字段) 与Move Method(搬移函数)
  • 重构思路:
    • 搬移字段:
      • 类中的某个字段比起自己类里,在另一个类中的使用频率更高,把此字段搬移到那个类中。使用此方法也需注意各个类的职责,并评估未来变化。
    • 搬移函数
      • 类中的某个函数比起自己类里,在另一个类中的使用频率更高,把此函数搬移到那个类中。使用此方法也需注意各个类的职责,并评估未来变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值