有什么好的方法可以清理旧项目?


Answers:


21

您有三个基本选项:

  1. 如果该应用程序很小并且确实混乱,那么重新开始可能是最好的选择。

  2. 重构

  3. 忍无可忍,破解其他功能。

通常,选项(2)是您最好的选择。

您实际进行多少重构将取决于您投入的资源与获得的价值。要提出的问题包括:

  1. 什么时间/预算可用?
  2. 您预计将来会进行多少修改?
  3. 还有谁会看到代码?(即,凌乱的代码会损害您的声誉吗?)
  4. 是否需要其他人维护代码?
  5. 有哪些重构工具可以帮助您?
  6. 您的重构经验是什么?
  7. 您将从重构中学到什么经验?
  8. 哪种重构将为您带来最大的收益?
  9. 已有哪些自动化测试?需要写吗?
  10. 需要多少手动测试?
  11. 如果您保留原样的代码,您会有什么感觉?

以我的经验,在重构过程中容易陷入混乱。我学到的最重要的教训是:

  1. 一次做一件事。
  2. 采取小步骤。
  3. 充分利用您的源代码管理(经常签入+包含注释)。
  4. 利用自动重构工具。
  5. 了解IDE。

6
我还想补充一下,以免状态太久。我已经看到许多开源项目在雄心勃勃的重写/重新设计过程中迅速死亡。非功能性项目会很快扼杀动力。
LennyProgrammers 2010年

2
绝对。关于雄心勃勃的重写/设计,我不止一次犯规。现在,我尝试以较小的步骤进行操作。我已将此建议添加到我的答案中。
Kramii

我还要补充一点,您不应重构没有为此编写测试的任何内容。抵制修复所有问题的冲动,只专注于需要更改以添加新功能的区域。完成此操作后,请决定要花费多少额外的精力来重构其余部分。
TMN 2010年

1
@TMN:理想的是。但是,您并不总是需要自动测试。(1)如果代码是在没有自动化测试的情况下开发的,那么在完成一些重构之前,对单元测试进行改造可能不容易/不可能(2)在进行细微的局部更改之前编写测试可能会很昂贵。(3)自动化的重构工具+ IDE功能可帮助防止因重构而导致代码中断。
Kramii 2010年

2
我要添加-在您的源代码管理中,将所有重构放在单独的BRANCH上。这有助于进行明智的逐步以及大块比较。如果事情变成蛋c,这将是无价的(他们会这样做)。
quick_now 2010年

5

好吧,至少需要重构,以便可以安全地添加新功能。即不要让它变得更糟。其余的取决于动机,预算和时间限制-但是要意识到,完全清除混乱可能要比原始创建混乱花费更长的时间。


1
这当然是著名的Boyscout规则:始终使代码处于比发现的状态更好的状态。
约尔格W¯¯米塔格

2

这次在修复事物时,请确保将其记录下来。下次您将看到代码时,回忆起来会容易得多。


1

这取决于它是因为混乱而花费更多的时间来维护它,还是重写它而不是使其混乱并易于维护。我现在正在亲自处理此事,我正在将Intranet站点转换为ASP.Net MVC3,因为旧代码是一堆废话(我写过),因为它本来应该是一次性的(是的,我应该知道得更多)。旧的废话还在这里,添加功能和修复错误令人头疼。MVC很漂亮,实际上使它变得令人愉快,因此它得到了重写。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.