“技术债就像俄罗斯方块”

根据维基百科的定义,技术债(Technical Debt)是 “编程中的一个概念,反映了当使用短期内易于实现的代码而不是应用最佳的整体解决方案时,出现的额外开发工作”。 技术债可以与金融债进行比较。如果不偿还技术债,则会积聚“利息”,从而导致之后更难以实施更改。 不过,技术债不一定是一件坏事,有时恰恰需要技术债才能推动项目前进。

开发者 Jonathan Boccara 将技术债比作俄罗斯方块。游戏初始,需要从一个空白的页面开始进行,就像从什么都没有的编码项目开头一样。

接着,方块开始掉落,每个方块被放置的位置都会影响游戏的其余部分。如果你在没有太多思考的情况下让方块自由滑落,那么接下来的游戏会变得更为艰难。反之,如果设法构建干净、紧凑的结构,在后期将更易于管理。

每个新的修复程序或开发都像一个新的方块一样,需要与现有代码集成。 如果以快速而肮脏的方式对其进行破解,就好像在俄罗斯方块结构中留下了漏洞。若希望少留些空白或漏洞, 则需要花时间设计一个干净的解决方案,来集成修复程序或开发程序。这不太容易实现,但从长远来看会有所回报。

俄罗斯方块游戏并非总是要求平坦的结构,只要能够有计划地增减和消除即可。 就像为垂直栏留出空间以一次滑入并清除四行一样,具有一种令人愉悦的感觉:

即便留有一些漏洞,也可以在其上方保留紧凑的行,这样可以在清除上方后,填充漏洞。 技术债也是如此,如果能够控制,并且计划在以后偿还,则可以适当增加债务。

当过去的技术债管理不善时,方块堆积至顶部,无法再添加新功能。 在这一点上,前进的唯一方法是回到过去,从而通过重构简化代码。不过,这在真正的俄罗斯方块游戏中无法做到。

另一位同样将技术债比作俄罗斯方块的开发者 Colin O'Dell 认为,必须使用与玩俄罗斯方块类似的思维过程来管理技术债:

  • 如何排列先前的块?(当前如何构建代码库? )
  • 是否有放置当前块的理想位置?(是否有执行当前任务的理想位置? )
  • 接下来会出现什么障碍,它们将如何调试?( 接下来会出现什么功能,它们又将如何适应? )

这样做将使维护现有功能以及引入新的更改和功能变得更加容易。 当你背负技术债时,不妨借鉴俄罗斯方块的思路,或是玩几局游戏,说不定能激发灵感。

来源: “技术债就像俄罗斯方块” - OSCHINA

weinxin
我的微信
一个码农、工程狮、集能量和智慧于一身的、DIY高手、小伙伴er很多的、80后奶爸。
Igor
  • 版权声明: 发表于 2020-02-0414:08:44
  • 转载注明:http://blog.tsingmac.com/prolions/software/osarea/2475/
DevOps到底是什么意思? DevOps

DevOps到底是什么意思?

提到DevOps这个词,我相信很多人一定不会陌生。 作为一个热门的概念,DevOps近年来频频出现在各大技术社区和媒体的文章中,备受行业大咖的追捧,也吸引了很多吃瓜群众的围观。 那么,DevOps是什...
C# NPOI导出Excel和EPPlus导出Excel比较 C/C++/C#

C# NPOI导出Excel和EPPlus导出Excel比较

C# NPOI导出Excel和EPPlus导出Excel比较 系统中经常会使用导出Excel的功能。 之前使用的是NPOI,但是导出数据行数多就报内存溢出。 最近看到EPPlus可以用来导出Excel...
如何将Word转化为Markdown文本 开源社区

如何将Word转化为Markdown文本

前言 Markdown文本使用起来固然方便,可也有些不尽人意的地方,估计啥软件或工具都是这样,有时候Word有些功能还是很讨人喜欢的,当你的笔记使用word编辑而又想发至网上时,格式转换痛苦之至,本文...
flutter、rn、uni-app比较 开源社区

flutter、rn、uni-app比较

前言 每当我们评估新技术时要问的第一个问题就是“它会给我们的业务和客户带来哪些价值?”,工程师们很容易对闪闪发光的新事物着迷,却经常会忽略这些新事物其实可能对我们的客户没有任何好处,反而只会让现有的工...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: