重写、重构还是重新发明?6 个软件重写故事的经验教训
重写、重构还是重新发明?
6 个软件重写故事的经验教训
对这个古老问题的新看法:您应该从头开始重写您的应用程序,还是“任何软件公司都可能犯的最严重的战略错误”?事实证明,处理成熟的代码库有两种以上的选择。
大约二十年前,Joel Spolsky 在他具有里程碑意义的文章“你永远不应该做的事情”中斥责 Netscape 重写了他们的代码库。
他的结论是,一个功能正常的应用程序永远、永远都不应该从头开始重写。他的论点围绕两点展开:
- 应用程序代码库中看起来很粗糙的部分通常嵌入了关于极端情况和奇怪错误的来之不易的知识。
- 重写是一项漫长的工作,它使您无法改进现有产品,而在此期间竞争对您有利。
对于许多人来说,乔尔的结论成为了一种信仰。我知道这对我当时的想法影响很大。
在接下来的几年里,我读到一些反对意见,认为在某些情况下,从头开始重写很有意义。例如:
- 有时,遗留代码库确实一团糟,无法修复,以至于即使是简单的更改也需要对代码的其他部分进行级联更改。
- 最初的技术选择可能会阻止您进行必要的改进。
- 或者,原始技术可能已经过时,导致很难(或昂贵)招募到优秀的开发人员。
当然,正确的答案是,这在很大程度上取决于具体情况。是的,有时逐步重构遗留代码更有意义。是的,有时候把它全部扔掉并重新开始是有意义的。
但这些并不是唯一的选择。让我们快速浏览一下六个故事,看看我们可以吸取哪些教训。
(奖励:每个故事的 ASCII 艺术摘要!)
近期评论