如果Scrum中的所有事情都关乎用户可以看到的功能性内容,那么与任何新的功能需求无关的重构代码是否真的有其存在的意义呢?
如果Scrum中的所有事情都关乎用户可以看到的功能性内容,那么与任何新的功能需求无关的重构代码是否真的有其存在的意义呢?
我认为这与Scrum并不那么相关,而是与项目管理哲学有关。
无论项目是否使用Scrum,许多项目经理都不喜欢开发人员花时间在“不必要”的事情上,比如代码重构或重组,这些事情并没有直接推进尚未完成的功能要求之一。这不像正常开发一样“产生结果的工作”,而是“防止以后延迟结果的工作”。考虑到Sprint通常使用的短期时间表,其好处往往难以看到,几乎不可能量化。
保持代码可维护性需要成为您Burn-down list(如果使用Scrum)中的一个项目。它和新开发一样重要。虽然它可能看起来不像是对用户“可见”的东西,但忽略它将增加您的技术债务。当技术债务足够累积,以至于您的代码缺乏可维护性会减缓开发速度时,新功能开发的延迟将被客户看到。
这完全是管理/哲学问题。与其将重构和可维护性增强视为不影响客户的“额外”工作,不如将其视为投入时间,以防止客户可见的延迟(以及潜在的错误)。开发人员有时可以比管理人员更清楚地看到这些好处;如果您的经理不了解忽略可维护性的缺点,您可能需要与其他几个开发人员一起与经理交流。
我想你可能是在谈论大规模重构,而不是在整个红绿重构周期中持续进行的重构。
我的方法是这样的,如果重构旧功能使添加新功能变得更容易,那就去做。但在某些方面,你是正确的,如果没有特定单元需要改变(即完全完成,再也不会改变,并且永远不会影响其他模块),则没有实际需要重构。然而,我很少找到一个如此最终化的模块。