TDD实践的思考
关于上上周的TDD实践,找了一个水平比我更高的程序员进行了简单的指导。
问题还是很多,很明显,我所能体会到的TDD的优势只总结出了三点。
而实际上还有更多的部分,没有被体会到,这就直接间接的说明了其中应该有一些问题。
我又再次看了Kent Beck的那本书,发现了一些细节:
1.在没有线索或者信心的时候使用Fake的方式实现
换句话说,如果是很简单很有把握的时候是不需要这样做的。TDD提供的是允许小步前进的,而不是捆住你的双脚,让你必须小步前进。
在信心不强的时候小步前进,绝对好过鲁莽前进然后摔倒。
2. 重构的时机(测试通过之后,写新的测试之前)
这个时候可以很确定在重构之前测试是通过的,并且期待重构之后测试也可以通过。如果重构出了问题一定要回退到测试通过的状态。
重构测试代码的时机也是类似的,并且有一种没有重构完成绝不继续前进的态度。
3.撤销,或者说后退
这个在前进遇到问题的时候可以恢复到正常状态,换句话说,我们允许出现一些实验性的举措。
4.测试中通过结果反推出过程(数据的准备)
测试的代码可以看成是期望的API接口,这点一般是相对可预期的。数据的准备则偏向于设计的部分。
还有一部分命名的问题,都是我值得改正的问题。