在此环境中,有几个问题混合在一起使重构具有挑战性。与此混杂的是一些非技术性的问题(“但这是管理问题,我还没有赢得一场战斗”)。
要研究的第一个问题是长期运行的分支。这些分支很难跟踪开发人员视野之外的更改。要解决此问题:
- 代码完成后-进行一次编码(如果需要,让客户支持人员查看),但是将其快速合并到开发中,以便依赖于它的其他更改将能够被采用,并尽早发现冲突的更改进行中。
- 如果出于某种原因分支在重构过程中确实运行了很长时间,那么将其从稳定合并到分支中以接管更改和重构是一种好习惯。通常,这样可以最大程度地减少从要素分支合并到稳定分支的冲突和意外情况。
- 全面的集成测试需要针对发布而不是功能进行。在这种环境下,功能可能会或可能不会与系统完全集成。尽管可以单独对功能进行完整性检查,但它无法确定发行时的问题。
- 从代码完成到合并的整个过程(称为开发-从主/稳定/发布分支有其自身的问题,即没有掌握最新的开发更改),它应该不会太长。您等待的时间越长,丢失的知识就越多,并且代码很难与其他代码行集成在一起。
与此相关的另一个问题是,我提到以上几点是分支随着时间的变化而变化。它开始时是开发人员在其中进行开发的开发分支,然后成为测试区域(在此进行的测试在整个应用程序中可能有意义吗?),然后合并为稳定的(大概已发布)。再次测试?)。
使用较短的开始到结束时间,其他分支可以更轻松地进行重构。
鼓励开发人员获得整个环境。挑剔的变化可能会导致...可以说是有趣的开发人员环境。尽管选择樱桃有其用途,但将其作为将更改拉入分支的默认模式可能令人担忧。
重构是理想情况下不断进行的工作,如果不是经常停工的话,则经常进行重构。分支,做一个简单的重构,运行单元测试以验证一切仍然正常(它的单元测试了,对吗?),然后合并回到稳定状态。将信息传递给其他开发人员,以将您重构的那些更改拉到他们自己的分支中。
对于开发人员来说,拥有代码质量很重要。虽然功能的方向来自外部,并且时间分配通常不是我们自己的,但代码质量是值得引以自豪并为此付出时间的。
您可能会发现以下问题对于分配时间来处理技术债务很有用:
您可能还希望看一下声纳之类的工具,这些工具可以帮助确定代码重构最需要工作的区域。该技术债务插件的东西,可以在代码库来帮助一点摆脱债务随着时间的累积。
通常需要指出,用于处理技术债务的投资回报是开发团队的功能和错误修复的更快处理时间。