重构-改善既有代码的设计(十二):大型重构

本文详细介绍了四种重构技术:1) 分解继承体系,通过委托关系降低复杂性;2) 将过程化设计转化为对象设计,提高代码可维护性;3) 分离领域逻辑与展示,应用MVC模式;4) 提炼继承体系,以子类应对特殊情况。这些重构方法旨在改善既有代码设计,提高软件质量。

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

1、梳理并分解继承体系(Tease Apart Inheritance)

(1)症状:某个继承体系同时承担两项责任

(2)解决:建立两个继承体系,并通过委托关系让其中一个可以调用另一个

(3)混乱的继承体系是一个严重的问题,会导致重复代码

(4)将代码较多的职责留在原地,这样一来需要搬移的代码数量就会比较少

(5)如果继承体系中的某一特定层级上的所有类,其子类名称都以相同的形容词开始,那么这个体系很可能承担着两项不同的责任

  • 首先识别出继承体系所承担的不同责任,然后建立一个二维表格,并以坐标轴标示出不同的任务
  • 判断哪一项责任更重要些,并准备将它留在当前的继承体系中,准备将另一项责任移到另一个继承体系中
  • 使用Extract Class从当前的超类提炼出一个新类,用以表示重要性稍低的责任,并在原超类中添加一个实例变量,用以保存新类的实例
  • 对应于原继承体系中的每个子类,创建上述新类的一个子类,在原继承体系的子类中,将前一步骤所添加的实例变量初始化为新建子类的实例
  • 针对原继承体系中的每个子类,使用Move Method将其中的行为搬移到与之对应的新建子类中
  • 当原继承体系中的某个子类不再有任何代码时,就将它去除
  • 重复以上步骤,直到原继承体系中的所有子类都被处理过为止,观察新继承体系,看看是否有可能对它实施其他重构手法,例如Pull Up Method或Pull Up Field

 

2、将过程化设计转化为对象设计(Convert Procedural Design to Object)

(1)症状:有一些传统过程化风格的代码

(2)解决:将数据记录变成对象,将大块的行为分成小块,并将行为移入相关对象之中

  • 针对每一个记录类型,将其转变为只含有访问函数的哑数据对象
  • 针对每一处过程化风格,将该处的代码提炼到一个独立类中
  • 针对每一段长长的程序,实施Extract Method及其他相关重构将它分解,再
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值