文章

所有代码都是技术债

下面这段话引自阮一峰的网络日志最近在网站上发表的一篇文章,题为 “所有代码都是技术债”:

代码是公司的资产,公司总是鼓励大家多写代码。但是,很多人(尤其是管理层)没有意识到,代码也是负债

代码越多,债越多,这就是程序员常说的”技术债”。

“技术债”(technical debt)源自著名程序员沃德·坎宁安(Ward Cunningham)的一篇文章。他写了一句话:”交付代码就像负债累累。”

你的代码一旦进入生产环境,就像背上一笔债务,将来需要不断支付利息,除非代码不再使用。

这个比喻获得了共鸣,人们把代码带来的负担,称为”技术债”

为什么代码好比负债累累?这有两个原因。

  1. 由于各种限制,代码的实现有问题,包含了 Bug,或者选择了有问题的组件,后期需要修改或重写。
  2. 即使代码是完美的,但由于技术进步,它会逐渐腐化过时,后期需要不断维护和更新,这通常比原始开发成本更高。

这意味着,无论多么小心,上线的代码总是有”技术债”。 可以这样说,所有的代码都是技术债

“技术债”的可怕之处,在于你必须按时偿还,如果拖着不还,它就会像雪球一样越滚越多,维护成本越来越高,直到再也无法维护,只能放弃这段代码。

既然所有代码都是技术债,程序员写代码时,就必须考虑到它的长期成本,尽量减轻自己或别人日后的负担(利息)。

一个基本的事实是 代码越少,技术债越小;没有代码,就没有技术债。从这个角度看,软件开发的正确做法是下面两点。

  1. 冗余的代码都要删除。
  2. 只实现那些必须实现的功能,除非绝对必要,不要引入新功能。新功能必然带来新的代码,而且新功能一旦添加,就很难废除,总是会保留下来。

避免技术债务

  • 尽量减少不必要的代码编写。
  • 充分了解需求,明确需求带来的价值。
  • 避免仅凭本能使用编码来解决问题。


深入思考并领悟了Rust社区中所提到的一句话:”Rust是一门对资本友好的语言“。

本文由作者按照 CC BY 4.0 进行授权

Comments powered by Disqus.