如果这是一个骗局,请原谅我,但我找不到任何符合这个确切问题的东西。
我正在使用一个耦合非常紧密的遗留应用程序。我们正在提取一些主要功能,因为我们将从外部服务中获取该功能。
开始删除现在未使用的代码的最佳方法是什么?我应该从极端基础开始,移除并重构我的堆栈吗?午餐期间,我将去看一看《有效地使用旧代码》。
如果这是一个骗局,请原谅我,但我找不到任何符合这个确切问题的东西。
我正在使用一个耦合非常紧密的遗留应用程序。我们正在提取一些主要功能,因为我们将从外部服务中获取该功能。
开始删除现在未使用的代码的最佳方法是什么?我应该从极端基础开始,移除并重构我的堆栈吗?午餐期间,我将去看一看《有效地使用旧代码》。
如果可以,并且在您的问题域中有意义,我会在开发过程中尝试保持旧代码与新 API 并行运行。并使用旧 API 的结果来交叉检查新 API 是否按预期工作。
我的建议是使用 findbugs 和 PMD/CPD(复制粘贴检测器)来删除死代码(不能或不会调用的代码)未使用的变量和重复的代码。摆脱这些垃圾将使重构更容易。
然后学习 IDE 中常见重构的键映射。提取方法和引入变量应在一个小时后致力于肌肉记忆。
我认为您可以做的最重要的事情就是以非常小的块重构/删除/测试。这既乏味又耗时,但有助于以后限制风险和错误。
我也会从更改“低风险”的代码开始。
您绝对不能使用实时开发版本 [正在添加的新功能]。您必须从功能冻结开始。
我倾向于在概览中查看系统的所有组件,并查看最大的重用位置。从那里我将实施适当的设计模式来解决它,并使新组件可重用。编写测试用例以确保新代码按预期工作,然后围绕新更改重构代码。然后重复[概述等],直到您满意为止。
我建议这样做有很多原因:
使用紧耦合代码的主要缺点来……你的优势!第 1 步:确定提供要替换的冗余功能的区域。打破它...对应用程序的一些关键部分进行快速冒烟测试。感受一下。
第 2 步:根据使用的语言找到相关的静态代码分析工具并获取所需的重构信息。
第 3 步:重复第 1 步,逐步缩小到确切的模式。
当然,所有这些都是在沙盒环境中进行的。这可能看起来有点随意,但是如果您将自己限制在关键功能测试中……您可能会在此过程中获得很多线索。如果不出意外,您肯定会识别遗留代码的模式。