作者回复: 是这样子的,磨刀不误砍柴工
作者回复: 预防是最好的方法,也是要求最高的。
技术债务的问题确实是没有万能的解决方案,还是要先识别,然后理性客观的做一个方案,再有计划的去实施。
作者回复: 这种开发流程问题肯定还是要自上而下推才能推得动。
我觉得首先应该先找一两个小项目组试点,摸索出一套适合你们的最佳实践,形成流程规范,比如说基于Github Flow,把CI(持续集成)环境搭建起来(如果没有的话),把你说的SonarLint、自动化测试加入到CI流程中。
再就是逐步扩大范围,在更多项目组推行最佳实践和流程规范,并且改进流程规范。
最后就必须要借助行政手段强制推行了。
因为我对你的情况不是很了解,先简单回复一下,你有后续问题可以继续留言。
作者回复: 👍技术债务最重要的一步就是识别出来问题在哪,然后再有一个稳妥的方案。
你这个问题,我建议你先把相应的自动化测试代码补上,然后保证有一定测试覆盖之后,再逐步用新模块替换旧模块,最终完全替换。
作者回复: 突然感觉我们是金融行业从业者😄
作者回复: “在你手中的技术债务就应该当成自己欠下的技术债务来解决,这样才能持续性的做好自己分内和分外的事情,工作起来才能得心应手。”👍👍
说的真好,偿还技术债务,从自己做起!
作者回复: 重构的要领我觉得两点:
第一:你要先写一部分自动化测试代码,保证重构后这些测试代码能帮助你检测出来问题
第二:在重构模块的时候,老的代码先保留,写新的代码,然后指向新代码,或者用特定开关控制新旧代码的指向(这样上线后可以自己先测试,有问题也可以及时关闭),然后让自动化测试通过,再部署测试,新代码没问题了,删除旧代码
作者回复: 1. 技术债务通常是指技术层面的,比如说代码质量底下,缺少良好的架构设计,缺少自动化测试覆盖等等,最终技术债务导致的结果就是产品质量低,难以响应需求的变化等
2. 重构和接口设计是两个不同概念,重构是对代码或系统结构进行调整优化,接口设计是架构设计的一部分。
大的系统重构也需要先进行架构的设计,其中包括接口的设计,在设计的时候就要决定新的接口是否兼容老的接口,设计完成后,在重构时,就应该遵循设计时定义的接口设计。
作者回复: 这个三角形,更多的是反应各个因素的影响关系,不完全对应几何上的反应 😛
作者回复: 是的,就是一个普通的软件项目,有需求说明,然后立项开发。
作者回复: 需要综合评估一下,如果很稳定也不重要,那就别动了,补一点文档。
如果很重要又不稳定,建议对其立项,用开源产品或者商业产品或者新技术实现同样的需求,然后换掉。
作者回复: 单元测试、自动化测试在第27篇会再讲,希望到时候能解答你的一些困惑,当然也建议你看一些书,毕竟一些语言相关的还是得自己去学习研究。
作者回复: 是的,需要先识别,然后做方案,再做计划。线上项目不能太激进,不然代价很大的。
作者回复: 这未必是最好的方式,可以尝试预防为主,日常及时小范围重构,应该效果更好
作者回复: 👍先识别,然后定方案,最后再行动
作者回复: 技术欠债多了,想一次还清几乎不可能的,只能是一点点还。关键不是要彻底还清,因为总有新的债务,而是要有技术债务的意识,控制在合理的范围。
作者回复: 👍谢谢总结分享