您将如何维护以下遗留应用程序:
???
尽快写测试。优选地违反要求(如果存在的话)。从功能测试开始。以小块重构。无论何时触摸代码,都要比开始时更清洁,更好。
两件事情。
你完成这个的速度可能很慢....通常,你应该“只是维护它”而不是解决它。
但是,在“学习如何维护它”阶段,您可以编写大量的单元测试。
然后,当找到错误并请求增强功能时,您可以添加更多测试。
它是敏捷的,适用于遗产。
我已经看到,工作过并且正在代码库中工作,该代码库满足问题中提到的所有条件:-)
维护此代码库所遵循的方法并不是一件容易的事情。 FWIW,代码工作,最终用户很高兴。没有人会听开发人员的呼声,即有重复的代码,硬编码的字符串等。我们只是偷了一些时间来修复任何可能的事情并且非常谨慎地不引入新的bug。
我想我会创建一小组最新信息:什么动作调用哪些功能等。
从那里,我会看重构。重复逻辑似乎是可以重构的东西,但请记住
我认为抵制的最大冲动是“重建整个该死的东西!”并首先了解系统,揭开野兽的神秘面纱。
sudo rm -rf /
但更严重的是,我认为必须对其进行评估。如果代码不断地是变更请求的来源并且变化很困难,那么不久之后你必须考虑是否值得尝试将系统重构/重新设计成更现代的东西。当然,这并不总是切实可行,因此您最终只需要团队中的一些人负责维护旧部件。尽可能地,团队中的每个人都应该能够维护系统的所有部分......
我认为另一件重要的事情是跟踪团队花费在执行维护/功能请求的遗留系统上花费的时间和精力。在评估替换旧系统/组件的新工作的计划时,这些指标可能是令人信服的。
我基本同意Paul C所说的一切。我不是TDD牧师,但无论何时你触及遗留的代码库 - 特别是你不熟悉的代码库 - 你需要有一个坚实的方法来重新测试并确保你跟随希波克拉底:第一, 不要伤害。特别是测试,良好的单元和回归测试是实现这一目标的唯一方法。
如果它是你不熟悉的代码库,我强烈建议你拿一份Reversing: Secrets of Reverse Engineering Software。虽然这本书深入到了你当前需求之外(而且是我的,但就此而言),它教会了我很多关于如何安全和合理地使用别人的代码。