发布于 2026-01-06 0 阅读
0

关于遗留代码,你应该停止相信的 5 个误区

关于遗留代码,你应该停止相信的 5 个误区

如果你曾经打开过一个代码库,然后立刻低声惊呼“糟了……”,那么这篇文章就是为你准备的。
多年来,我与无数面临代码迁移的开发者进行过交流,他们都在问着同样的问题,分享着同样的挫败感。我突然意识到:我们并非在与遗留代码本身作斗争,而是在与围绕着它的种种迷思作斗争。

昨天我在JS Poland 大会上做了关于将旧前端迁移到现代工具的不同策略的演讲。哇——真是精彩的一天!
感谢所有到场的朋友。我玩得很开心,也希望你们有所收获(或者至少喜欢我那些关于“古老代码考古”的笑话😄)。

在JS波兰会议上发言

受演讲后所有讨论的启发,我决定写下关于遗留系统的最大误区——我们作为开发人员经常重复的那些话,以至于它们听起来像是普遍真理……即使它们并非如此。

让我们来逐一揭穿它们👇


误区一:“传承意味着古老的或异域风情的。”

不。传统技术并不一定是指上世纪90年代那些神秘的、被人遗忘的技术。

有时候,它只不过是……昨天的主流而已。

  • 一个略微过时的Angular版本
  • 一个包含大量类组件的 React 代码库
  • 一个“仍然有效,所以不要动它”的 Webpack 3 配置

遗留问题并非指工具的年代久远,而是指工具与当前环境的不匹配。当团队、生态系统或业务发展到新的阶段,而代码库却没有相应更新时,该工具就变成了遗留工具。


误区二:“历史遗留问题是前任团队的错。”

这条总是让我发笑。

你几乎永远不会知道你继承的代码背后的全部故事:

  • 或许这个项目已经停滞了6年。
  • 或许团队缺乏足够的经验或时间来进行迁移。
  • 或许那个什么都懂的人在2018年离开了公司。(我们都认识这样的人。)

指责别人很容易,理解事情的来龙去脉却更难——但也更有成效。


误区三:“迁移只是开发人员的执念。”

我希望如此😅

历史遗留问题可能会在不知不觉中损害企业:

  • 安全问题
  • 性能问题
  • 不断上涨的维护成本
  • 由于每个新功能都像是在拆除炸弹,所以交付速度放缓。

迁移不是为了面子,而是为了风险管理。


误区四:“大爆炸式重写总是一种反模式。”

大爆炸式重写法名声很差——通常是有原因的。
但有时,它们却是最便宜、最快捷的解决方案。

如果应用程序规模小、功能独立且并非关键任务型应用,那么可以进行彻底的重写:

  • 更简单
  • 更安全
  • 更快
  • 而且比耗时数年重构旧代码要轻松得多。

并非每次迁移都需要像 Netflix 那样的多阶段大工程。


误区五:“绞杀式编织法是唯一正确的编织方法。”

绞杀者迁移非常适合大型、复杂的应用程序。但它也存在一些缺点:

  • 这需要时间(很多时间……)
  • 你将面临永无止境的迁移。
  • 你的团队需要同时掌握两种技术。
  • 新旧之间的界限可能会变得模糊不清。

它只是一种工具,而不是一种宗教。

有时候,绞杀者(Strangler)就足够了。
有时候,宇宙大爆炸(Big Bang)就足够了。
有时候,你需要的是两者的结合体。

真正的技巧在于根据自身限制条件选择合适的策略。


最后想说的

遗留代码并非失败,它只是软件自然生命周期的一部分。
每个代码库最终都会变成遗留代码——包括你今天正在编写的这个 😉

重要的是要了解各种权衡取舍,选择正确的迁移策略,并避免那些让传统系统看起来比实际情况更可怕的误解。

文章来源:https://dev.to/sylwia-lask/5-myths-about-legacy-code-you-should-stop- believe-pi3