【代码重构】变化阻碍(Change Preventers)--如何解决代码中修改代码中一个位置,代码中其它位置也要同步修改的情况?

本文探讨了三种常见的代码变化阻碍——发散式变化、散弹式修改和平行继承体系,分析了它们的问题来源并提出了解决方案。通过重构技术如提取类、继承和方法搬移,可以提高代码的条理性和可维护性,减少重复代码,简化维护工作。
摘要由CSDN通过智能技术生成

变化阻碍阻碍的特征

  变化阻碍的典型特点是当你需要对代码中的某个地方进行修改的时候,你需要在其它许多位置做出相应的许多修改。程序也因此变得更加复杂且难以维护。

变化阻碍阻碍的分类

1 发散式变化(Divergent Change)

1.1 典型特征(Divergent Change)

  你发现当你需要对一个类做某个修改时,你要修改类中很多不相关的方法。比如,当你添加一个产品类型的时候,你需要修改负责查询,展示以及下发订单的方法。
在这里插入图片描述

1.2 问题产生的原因

  通常,这些发散式的代码修改是因为糟糕的代码结构和复制粘贴式的编程所导致的。

1.3 解决方法

  ●通过提取类法分离类中的这些行为。
  ●如果不同的类中有相同的行为,你可以通过继承的方法来将它们合并(提取父类法提取子类法
在这里插入图片描述

1.3 好处

  ●使代码更具条理性。
  ●减少重复代码。
  ●使代码维护更简单。

2 散弹式修改(Shotgun Surgery)

2.1 典型特征

  做任何一处修改都需要你在许多不同类中同时修改。
在这里插入图片描述

2.2 问题产生的原因

  类的单一职责原则在很多类中被破坏。当过分应用发散式变化重构法时可能会导致该问题的出现。
在这里插入图片描述

2.3 解决方案

  ●使用类搬移法和字段搬移法将已经存在的类中的行为放在一个单独的类中。如果没有合适的类适合做这件事,就创造一个新的类。
  ●如果将代码放到同一个类中导致原来的类几乎变空了,那么可以使用内敛类法来消除掉这个多余的类。
在这里插入图片描述

2.4 好处

  ●使代码更具条理性。
  ●减少重复代码。
  ●使代码维护更简单。

3 平行继承体系(Parallel Inheritance Hierarchies)

3.1 典型特征

  每当你想要给一个类新建一个子类的时候,你发现你需要为其它的类也创建一个子类。

在这里插入图片描述

3.2 问题产生的原因

  当这个层次体系规模较小的时候,一切都非常良好。但是随着新的类的增加,修改代码变得越来越难。

3.3 解决方法

  你可以分两个步骤去重复平行层次结构。首先,让一个层次结构的实例引用另一个层次结构的实例。然后,通过使用方法搬移法字段搬移法删除被引用类中的层次结构。

3.4 好处

  减少重复代码。
  提升代码的条理性。
在这里插入图片描述

3.5 何时可以忽略

  有时候,平行的类层次结构只是避免程序架构更混乱的一种方法。如果你发现消除重复层次结构的尝试会产生更糟糕的代码,那么就干脆放弃修改,恢复所有更改,并习惯这些代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值