红色,绿色,重构:每个测试用例后重构,还是整个测试套件充实?

Mik*_*gan 2 tdd refactoring

TDD中红色,绿色,重构(RGR)工作流程的写入表明,如果需要,可以通过编写"有罪"代码来快速获得绿色(Kent Beck在TDD中通过示例说"快速绿色为所有罪行辩解"),然后重构改善设计.我不清楚什么时候做最好的重构步骤.

假设我正在制作BookByIsbn REST服务.我可以按以下顺序生成测试用例(仅供讨论)

"produces 404 (not found) if book does not exist"
"produces 400 (bad request) if isbn is invalid"
"returns 200 and entity if book found"
etc
Run Code Online (Sandbox Code Playgroud)

RGR的字面解释似乎表明我在快速得到每个测试用例绿色后重构.但这可能会导致多次重构到下一个测试用例无效的设计.我觉得延迟重构步骤直到完整的测试套件是绿色的,当我完全了解服务必须做的所有事情时,是一种更有效的方式来执行TDD.

所以,问题是:RGR是否最好通过训练自己在每一个绿色之后进行重构,或者推迟步骤直到更多的要求表面更有效?

Jon*_*eid 8

  • 重塑每一个绿色.
  • 重构生产代码和测试代码.

这确实意味着有时设计是非常短暂的.但这意味着代码始终是您当时编码要求的最佳表达方式(测试,随着它们的增长).