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是否最好通过训练自己在每一个绿色之后进行重构,或者推迟步骤直到更多的要求表现得更有效?
答案 0 :(得分:8)
这确实意味着有时设计非常短暂。但这意味着代码始终是您当时编码要求的最佳表达方式(测试,随着它们的增长)。