首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

维护遗留软件使你意识到代码是多么脆弱

令人惊奇的是,软件每天都能正常工作。

我们发明了一些复杂的系统来支撑我们的应用程序,通过层层的抽象来保持它们的运行。

但当你真正停下来思考时,你刚刚构建的应用实际上依赖于某个开源框架。而这个框架依赖于很多其他的开源项目,每一个都有其自己的依赖项。

在几天内,这条依赖链就会过时。底层的包都有了新版本。

几个月内,你需要进行一些依赖更新,因为底层包中存在一些安全或许可证的漏洞。

对于遗留软件来说,升级通常可能会落后好几年。而使应用程序达到最新状态所需的工作是巨大的。

近期的困境

在过去的一周工作中,我开始了一个项目,目标是用现代的依赖关系来更新一个遗留应用程序。

令人惊讶的是,很多事情都可能出错:

• 我从GitHub拉取了源代码,立即遇到了很多错误,只是为了在本地构建应用。

• 更新一个包可能会导致它与另一个包的当前版本不兼容。级联更新意味着找到一个新的稳定构建可能会是个挑战。

• 往往要求会直接冲突。这周我有一个时候,一个包需要 ,而另一个包需要 。我要么需要降级一个依赖,要么需要对另一个带有破坏性更改的依赖进行主要版本升级。

• 当依赖项之间不能很好地相互协作时,可能会出现奇怪的错误。用不匹配的依赖项运行应用可能会导致你之前从未见过的异常,这些异常深藏在包的内部。需要大量的猜测和检查来确保所有人都能和谐地工作。

依赖地狱

我不认识一个软件工程师,没有一个经历过这种挣扎的版本。依赖管理确实很难。

升级、导航破坏性更改、以及在Stack Overflow上花费大量时间来诊断为什么我会得到某些错误。

这使得很多时候,软件能够按照我们的预期工作,这一点更加令人惊讶。再考虑一下,你会意识到为了让你的应用运行,数十个不同的、独立的软件包之间的每一件事都必须恰到好处。

这真是太疯狂了!但这是现代软件的真相。

每周清单

请记住,始终保持学习的态度,并享受编码的乐趣!祝您编码愉快!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OyXq18iDO5s4Wmjfucl_-XNw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券