搜狐首页 科技 画心师

手机搜狐

SOHU.COM

为什么你要坚决移除项目中的无用代码?

作者|BenLinders

支持|Rays

我们需要发现并移除项目中的无用代码。对于开发者来说,无用代码的存在会加大他们理解程序的难度,也会增加很多的安全风险。移除无用代码并非是一个技术问题,而是一种理念上的和文化上的问题。

Kevlin Henney是一位独立顾问和培训师。他在2017年欧洲测试大会上以“我们做事方式中的错误”为题目做了开幕式主题演讲,并在演讲中展示了无用代码的唤醒是如何给企业带来上百万的损失。InfoQ以问答、总结和文章的形式对大会作全程覆盖报道。

Henney指出,很多系统故障都是源自无用代码。无用代码是存在于系统中的、但并不被认为会再被使用的代码。意外执行这些代码会导致系统严重故障。因此,他建议必须移除无用代码,以避免此类问题的发生。

InfoQ就如何解决无用代码所导致的问题采访了Kevlin Henney,并请教他如何处理出错状态和异常。

InfoQ:您谈及被激活的无用代码将会对企业造成巨大损失,能就此解释一下吗?

Kevlin Henney: 2012年8月1日纽约股票交易所开盘后,Knight Capital Group最新的高速算法给出的交易路线错误下单,所产生的交易充斥了整个市场。系统在错误运行大约45分钟并完成了4亿股交易后才被下线。一切尘埃落定后,所造成的净损失达每分钟一千万美元以上。

这个破产界定事件源自于一场完美风暴(即独立发生时没有危险性但一并发生时会带来灾难性后果的事件组合)。为使新的NYSE交易系统按预期在8月1日上线,公司在服务器上部署了更新。工程师手工更新了服务器,但他们并不知道其中的一次部署失败使旧版本保留运行。在新的NYSE交易系统中,他们重用了一个旧标识,但是该停用标识已更改了用途,用于表示另一个意义。虽然该标识在过去的八年中都没有被使用,旧版本代码依然依赖于这个旧标识。

这段已有八年时间处于无用状态的代码由于标识值的更新而被唤醒了。僵尸灾难发生了,只剩下破产一条路。

InfoQ:采取哪些措施本可以避免问题的发生?

Henney:可以说完美风暴中的任何一个贡献因素都是有问题的,但是这些因素的组合被证明会引发更为严重的问题。更改其中任何一个贡献因素都有可能阻止或至少降低损害:

精选