你是否觉得无力解决技术债务问题,因为管理层似乎不在乎修复已经存在的东西?
“客户不会出钱把有用的东西换成可能有用的东西!”
经理和开发人员有不同的驱动程序,但他们为同一家公司工作。这些相互矛盾的观点可以通过更好的沟通来解决,一些论点可能会有所帮助。
只要你能想出一个计划,让你的团队比以往任何时候都更快,你肯定会得到管理层的支持!但衡量技术债务是困难的,而且他们无论如何也不了解技术细节…。
希望有一种简单而有效的方法来优先处理哪些科技债务:热点分析。
这个概念很简单,管理者可以理解其中的价值。代码的某些部分经常更改。保持这些东西的清洁对你的工作效率有很大的影响。这对业务来说是很高的投资回报率!
有了热点,您可以构建一个合理的重构计划来证明。这是开始做某事的一种非常务实的方式👊。
但是,您将如何解释这个像样的计划,而不会让它们陷入客户流失和代码复杂性的技术细节之中呢?井…。您可以练习演示技巧,也可以使用“封闭图”。
树状图是最流行的封闭图。如果您曾经生成过webpack捆绑包的树状图,那么您已经意识到它们有多大的帮助:
我在阅读亚当·托恩希尔(Adam Tornhill)的“软件设计X-射线”(Software Design X-Rays)时发现了一个想法,即用盘柜图来识别系统的热点。这是一本很好的书,展示了基于行为分析理解遗留代码的技术。总有一天我会写一篇关于它的重要部分的总结…。
好消息是:盘柜图表将帮助您向非技术人员解释系统热点的影响和重要性。
这里有一个更好的消息:您可以在几分钟内为您的代码库生成一个!
这是很棒的东西,但是Silvio Montanari在上面构建了一个工具来使这个过程更加简单:代码取证。
这个工具可以让您使用行为数据从代码库中获得很多洞察力。在这里,我将重点关注热点。这是你需要为重构科技债务辩护的一件事。
它很受欢迎。不管您使用的是哪种语言,您可能已经使用过(或听说过)Docker。
我不熟悉代码库。我打赌你不是。然而,我们将在几分钟内从中获得洞察力。
与真正的遗留代码库相比,它算不了什么。但这已经足够大了,足以说明。
我在分解每一步所以没有魔法。我建议你把这些台阶复制到你这边,这样你就能感觉到它是如何工作的。
需要说明的是,我正在使用Node13.5.0、NPM6.13.4和Java8运行以下分析。我使用的是MacOS,但这在Linux上应该可以很好地工作,可能也可以在Windows上运行。
{";名称";:";代码取证-分析";,";版本";:";1.0.0";,";描述";:";";,";Main";:";index.js";,";脚本";:{";测试";:";ECHO\";错误:未指定测试\";&;&;退出1";},";关键字";:[],";作者";:";";,";许可证";:";ISC";}。
相反,我建议在本地同时安装两者。这就减少了需要处理的副作用:
{";名称";:";代码取证-分析";,";版本";:";1.0.0";,";描述";:";";,";Main";:";index.js";,";脚本";:{";测试";:";ECHO\";错误:未指定测试\";&;&;退出1";},";关键字";:[],";作者";:";,";许可证";:";ISC";,";依赖项";:{";code-forensics";:";2.3.1";,";吞咽";:";4.0.2";}}。
{";名称";:";代码取证-分析";,";版本";:";1.0.0";,";描述";:";";,";Main";:";index.js";,";脚本";:{";开始";:";GUMP Web服务器";},";关键字";:[],";作者";:";";,";许可证";:";ISC";,";依赖";:{";代码取证";:";2.3.1";,";咽下";:";4.0.2";}}。
目前没有报告,让我们创建第一个报告。
脚本可以与Gulp一起运行。当我们在本地安装它时,我们可以从NPM脚本访问它。
{";名称";:";代码取证-分析";,";版本";:";1.0.0";,";描述";:";";,";Main";:";index.js";,";脚本";:{";开始";:";吞咽Web服务器";,";热点";:";吞咽热点分析--dateFrom=2019-06-01--dateTo=2020-06-01";},";关键词";:[],";作者";:";";,";许可证";:";ISC";,";依赖项";:{";代码取证";:";2.3.1";,";吞咽";:";4.0.2";}。
我已经限制了分析期间,以便您可以复制相同的报告。您可以省略--dateTo,但是知道您可以随时重现您的分析是很方便的!
另外,我通常建议分析过去12个月的情况。你不需要更多了。
这是你要向你的经理传达的信息。我们的目标不是为了清理代码而清理代码,而是为了业务做出战略决策。
人们会明白这些都是需要解决的关键问题。根据过去12个月的实际工作,这些是影响团队工作效率的最大障碍!
该图是交互式的。您可以单击气泡以放大到文件级。
我敢打赌,这已经成为捕捉所有虫子的上帝测试。我建议识别并提取相关的测试,以便更容易地编写和更新它们。
主文件方便地组合了许多不同的职责。您需要一个主文件。但在我看来,它如此频繁地被触及这一事实是一个迹象,表明我们在那里混合了不同程度的抽象。识别并提取这些职责可能会对代码库的可维护性产生最好的影响。
在几分钟内,您就可以在不太了解代码库的情况下,优先处理最重要的10%的工作。
想象一下,您可以在每天使用的代码库上使用这项技能做些什么。
想象一下,您向管理层展示了清晰的图表,并赢得他们对您改进系统所能做的最基本的重构工作的支持。
现在,睁开眼睛,去生成遗留代码库的热点图!👍。
由在加拿大蒙特利尔生活和工作的Nicolas Carlo撰写,🍁他创建了软件工匠蒙特利尔社区,该社区关心构建可维护的软件。
←返回主页