在敏捷开发中,您如何处理以冲刺为中心的思维导致的“不太精心设计”的代码

时间:2010-01-26 22:52:03

标签: architecture refactoring agile scrum sprint

我使用Scrum开展敏捷项目。

Sprint已经过去了,我们已经成功实现了里程碑。该系统运行良好,足以满足当前客户的要求。

然而,我们留下了一个严重需要重构的系统,因为很多开发都是在很少关注未来的情况下进行的(相反,焦点在于手头的sprint)。

如何最好地处理这个问题? Sprint(s)致力于重构?

5 个答案:

答案 0 :(得分:25)

是的,偶尔的其中一个有时并不是坏事。但如果您使用Scrum敏捷,那么您可能会尝试遵循测试驱动开发(TDD),重要的是您要记住序列是红绿色 - 重构,而不仅仅是红 - 绿。质量差的代码不是敏捷开发的输出,而是差的敏捷开发。

答案 1 :(得分:8)

你有'完成'的定义吗?

当您完成编码并准备办理登机手续后,您应该符合团队对“完成”的定义

此定义应包括满足您的验收标准/代码审查/测试审查/以及满足商定的编码标准。

如果经过多次冲刺,您的代码库需要进行严格的重构,我建议您对已完成的定义需要进行审核。

以下是Scrum联盟关于定义'definition of done'

的文章

答案 2 :(得分:7)

您不一定需要将整个sprint专用于重构,它也可以在任务级别工作。当你有一个需要使用一些毛茸茸的代码的故事时,在该故事中包含一个重构任务,作为使该部分做出任何合理的事情的先决条件。这样,您可以在功能上取得进步,但也可以逐步完成一些重构。

答案 3 :(得分:5)

对于我的团队,我通常每三到四个月开始一次重构冲刺。考虑到我们进行了为期两周的冲刺,那就是大约每七次冲刺就进行一次重构冲刺。

我像任何其他冲刺一样运行重构冲刺 - 严格的2周时间限制。有时我们甚至只运行一周的重构冲刺(当出现紧急情况时)。

关于重构冲刺的说明:不要过于雄心勃勃:

  1. 意识到重构是一个无限循环:你总能找到更好的方法来做事。
  2. 如果只重构需要重构的10%,那就没关系。
  3. 像其他任何故事一样对待重构,这样您就不得不优先考虑重构的内容,并确认代码中最需要重构的位置。唯一的区别是,对于重构故事,我让开发人员设定优先级。
  4. 部分重构仍然会使代码处于比没有重构更好的状态。此外,它可以使进一步的重构变得更容易。
  5. 在处理故事时,甚至在重构冲刺之外也会发生重构,但前提是重构是一个不会影响故事的低级结果。
  6. 这是我个人用作重构的指南。它不仅可以使重构成为可管理的,而且还可以作为你过度使用时的一个很好的指标。

答案 4 :(得分:3)

在我工作的地方,我们会有专门针对错误的短跑和technical debt。它在一定程度上改善了事物并具有持续改进的精神。

此处还要考虑的是,是否存在客户想要但尚未请求的增强功能。客户是否真的对当前的系统感到满意,或者它是否足够好以至于他不想抱怨?