内容提要
技术债务是开发中妥协的总和,分为鲁莽、审慎、故意、无意四类。债务会像利息一样累积,导致代码难改、维护困难。应对方法包括记录妥协、制定编码风格指南、代码审查、建立“耻辱文件”跟踪已知债务。
延伸解读
技术债务的四种类型:从鲁莽到无意
文章将技术债务分为鲁莽、审慎、故意和无意四类。鲁莽债务是明知后果却故意妥协,如滥用!important;审慎债务是明知未来有回报的妥协,如为兼容性添加浏览器前缀;故意债务源于预算、截止日期等外部压力;无意债务则因无知或疏忽产生。理解分类有助于团队识别债务来源,采取不同应对策略。
技术债务的利息效应:为何越晚偿还越难
技术债务会像金融债务一样产生“利息”。随着代码量增加和时间推移,一个妥协可能引发其他问题,形成雪球效应,导致维护成本上升、性能下降,甚至代码库不稳定。文章强调,债务累积到一定程度可能变得无法偿还,因此尽早识别和偿还是关键。
应对技术债务的实用方法
文章提出四种应对技术债务的方法:记录妥协(在代码注释中说明原因、影响和解决方案)、制定并遵守编码风格指南、进行频繁的代码审查、建立“耻辱文件”跟踪已知债务。这些方法旨在将隐性债务显性化,降低维护的认知负担,并像还信用卡一样定期偿还。
Q&A
技术债务具体指什么?
技术债务是指我们在开发过程中编写代码时所做的妥协的总和。你编写的每一行代码都可以视为对技术债务的贡献,因为它包括代码本身、代码的结果以及代码与其他代码的交互。债务的后果是当需要进行更改时会出现困难。
技术债务有哪几种类型?
技术债务分为四种类型:鲁莽债务、审慎债务、故意债务和无意债务。鲁莽债务是故意不考虑后果的妥协;审慎债务是明知未来会有回报的妥协;故意债务是在预算、截止日期等压力下故意做出的妥协;无意债务是因为无知而做出的妥协。
技术债务会带来哪些后果?
技术债务会像利息一样累积,导致代码库不稳定,甚至出现严重问题。利息根据债务金额和本金计算,写的代码越多、时间越长,利息越高。一个妥协可能引发其他问题,造成利息的雪球效应,最终可能无法偿还,表现为维护、性能等方面的问题。
如何应对技术债务?
应对技术债务的方法包括:记录一切,在代码中添加注释解释妥协的原因、影响和解决方案;制定并严格遵守编码风格指南;尽早、尽可能频繁地进行代码审查;建立“耻辱文件”跟踪已知的故意技术债务,并将其作为任务列表来偿还。
什么是“耻辱文件”?
“耻辱文件”是Harry Roberts提出的一个想法,用于跟踪故意技术债务。将所有已知的妥协记录在这个文件中,并将其用作需要还清的债务的任务列表。就像一张巨额信用卡账单一样,努力至少每月还清最低还款额。
代码审查对管理技术债务有什么作用?
代码审查可以尽早、尽可能频繁地审查代码,严格判断在可维护性、性能或可访问性等方面是否能做出更好的决策。代码的作者可能并不是最佳评判者,因此审查有助于发现和减少技术债务。