删除紧密耦合的代码

时间:2009-08-19 13:21:43

标签: refactoring legacy-code coupling

请原谅我,如果这是一个骗局,但我找不到任何可以解决这个问题的事。

我正在使用非常紧密耦合的遗留应用程序。我们正在提取一些主要功能,因为我们将从外部服务中获取该功能。

开始删除现有代码的最佳方法是什么?我应该从极端基础开始,删除并重构我的方式吗?午餐时我会去看Working Effectively with Legacy Code

5 个答案:

答案 0 :(得分:4)

如果可以,并且在您的问题域中有意义,我会尝试在开发期间尝试保持遗留代码与新API并行运行。并使用遗留API的结果来交叉检查新API是否按预期工作。

答案 1 :(得分:2)

我认为你能做的最重要的事情就是以非常小的块重构/删除/测试。这很乏味且耗时,但它有助于以后限制风险和错误。

我也会从“低风险”的代码开始改变。

答案 2 :(得分:2)

我的建议是使用findbugs和PMD / CPD(复制粘贴检测器)来删除死代码(不能或不会被调用的代码)未使用的变量和重复的代码。摆脱这种垃圾将使重新分解更容易。

然后了解IDE中常见重新分解的关键映射。提取方法和引入变量应该在一小时后致力于肌肉记忆。

答案 3 :(得分:1)

使用紧耦合代码的主要缺点来......你的优势! 步骤1:确定提供要替换的冗余功能的区域。打破它......对应用程序的一些关键部分进行快速烟雾测试。感受。

第2步:根据相应的静态代码分析工具的语言,获取所需的重构信息。

步骤3:在缩小到精确模式的增量级别中重复步骤1。

所有这一切当然都是在沙箱环境中。这可能看起来有点随意,但如果你限制自己进行关键功能测试......你可能会在这个过程中获得很多线索。如果没有别的话,你肯定会识别遗留代码的模式。

答案 4 :(得分:1)

你绝对不能使用实时开发版[添加新功能]。您必须从功能冻结开始。

我倾向于在概述中查看系统的所有组件,并查看最重用的重用位置。从那里我将实现适当的设计模式来解决它,并使新组件可重用。编写测试用例以确保新代码按预期工作,然后围绕新更改重构代码。然后重复[概述等]直到你满意为止。

我建议这有很多原因:

  1. 每个与你合作进行重构的人都会学到一些东西
  2. 人们学习如何避免设计错误
  3. 每个人都可以更好地理解代码库