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
RGR的字面解释似乎表明我在快速得到每个测试用例绿色后重构.但这可能会导致多次重构到下一个测试用例无效的设计.我觉得延迟重构步骤直到完整的测试套件是绿色的,当我完全了解服务必须做的所有事情时,是一种更有效的方式来执行TDD.
所以,问题是:RGR是否最好通过训练自己在每一个绿色之后进行重构,或者推迟步骤直到更多的要求表面更有效?
重塑每一个绿色.
重构生产代码和测试代码.
这确实意味着有时设计是非常短暂的.但这意味着代码始终是您当时编码要求的最佳表达方式(测试,随着它们的增长).