您指的是技术债务。
随着时间的推移,我们开发的产品都会产生技术债务;重构是减少技术债务的一种非常常见且有效的方法,尽管许多公司从未偿还其技术债务。这些公司往往会在未来几年内发现其软件极度不稳定,并且技术债务变得如此可怕,以至于您无法增量支付,因为以这种方式支付的时间太长了。
技术债务具有术语,因为它遵循相同的债务行为。您将承担债务,并且只要您继续花费(创建功能)并且不还清债务,债务就只会增加。就像债务一样,当债务过大时,您可能会希望通过完全重写等危险任务完全摆脱债务。就像真实债务一样,由于累积到一定程度,它也完全阻碍了您的花费(创建功能)的能力。
只是在混合中添加了另一个术语,内聚力是指系统(微观到线路级别,或者宏观到系统级别)的融合程度。一个高度凝聚力的系统将其所有部分很好地装配在一起,看起来就像一位工程师将其全部编写出来一样。您上面提到的只是将他们的代码粘贴到最后的人将违反该系统的凝聚力。
管理技术债务
管理技术债务的方法有很多,尽管像真实债务一样,最好的方法是经常偿还债务。不幸的是,像真实债务一样,在短时间内产生更多的收入有时是一个更好的主意,例如,某功能的上市时间可能会使您的收入翻倍或翻三番。棘手的部分是权衡这些相互竞争的优先级,并确定何时债务不值得给定功能的ROI和何时获得。
因此,有时短期内累积债务是值得的,但情况并非如此,就所有债务而言,期限越短越好。因此,在累积技术债务后,最终(最好是迅速)您必须偿还这些债务,这是常见的方法:
- 重构
- 这使您可以将仅在实现过程中或实现完成后才被误放置的代码片段放入正确的位置(或放置在更正确的位置)。
- 改写
- 这就像破产。它可以使一切顺利,但是您一无所有,也有机会犯同样的错误,甚至更大的错误。高风险,高回报的技术债务解决方案,但有时这是您唯一的选择。尽管这种情况很少见,但很多人会告诉你。
- 架构概述
- 这更多是一种积极的技术债务偿还方法。这是通过让具有技术细节权限的人员暂停实施而不必考虑项目计划和时间表的,以确保它减少了技术债务。
- 代码冻结
- 冻结更改代码可以让您喘口气,以免债务增加或减少。这使您有时间计划减少技术债务的方法,并希望获得最高的投资回报率。
- 模块化
- 这就像第2层方法,仅当您使用“架构概述” 已具有模块化系统或“重构”向其中一个迁移时可用。如果拥有模块化系统,则可以以孤立的方式偿还整个系统的债务。这使您可以进行部分重写,部分重构,并最大程度地降低技术债务产生的比率,因为隔离仅使债务保留在功能进入的那些区域,而不是分散在系统中。
- 自动化测试
- 自动化测试可以帮助您管理技术债务,因为它们可以帮助您识别系统中的问题点,希望在这些领域的债务变得非常大之前就可以了,但是即使在这样的情况下,他们仍然可以使工程师意识到这些危险区域,可能还没有意识到。此外,一旦获得了自动化测试,就可以更自由地重构事物,而不必担心破坏太多。不是因为开发人员不会破坏事情,而是因为他们会发现他们何时会破坏事情,所以在负债累累的系统中依靠手动测试人员往往很难发现问题。