我的TDD感悟(四)--TDD的“重构”
2018-12-13 本文已影响24人
人在云中
在我的TDD感悟(三)中,谈到了“绿”的开发步骤。很多人在实现了这一步后,就结束了。甚至这一步不是以小步快跑的方式循环执行TDD三步曲。那么“重构”在TDD中的位置是什么呢?
TDD 是否只关注“绿”
TDD中“绿”当然很重要,重要之处在于满足了需求。不过这个是最基本的,即使没有TDD,我们也需要保证代码的正确性。只不过TDD中的“绿”是分成若干个小阶段来实现的,而不是一口气实现“绿”的过程。那么我们为什么要把“绿”分布在若干个小阶段来实现呢。我认为主要就是为了重构,“绿”是为了实现代码,“重构”是为了整理代码。如果忽略了“重构”, 那么代码能运行, 但是代码的组织结构,或者代码的可维护性和可扩展性就没那么好了。
TDD中“重构”的作用
“重构”在这一个过程中起到了压舱石的作用。没有经历过重构的代码,一般代码的质量都是一般的,可维护性和可扩展性是较差的。但是相对于一般软件的集中式重构,分阶段重构,小步快跑方式的重构有以下几个优点:
- 重构紧挨着“绿”的过程,有测试代码保驾护航,重构更有信心
- 每次重构耗时不长,大脑不需要处理非常多的信息,有利于集中注意力,也让重构的质量更有保证
- 经常的重构,让大脑不停思考什么是好的代码, 如何实现好的代码有更深的感悟。时间一长,这些思考的累积,让自身对于编程的感悟更多,同时对于优质的代码有更深刻的认知,有利于写出更优秀的代码
使用TDD的时候,我们从中获得了什么
经过不停的迭代三步曲的过程,我们有了如下收获:
- 获得了测试用例,后续的接手人,也更方便对接业务
- 获得了单元测试代码,日后的代码维护更清楚
- 实现了业务逻辑,提高了边界的测试,提高了业务逻辑的质量
- 通过“重构”,获得了质量越来越好的代码
在这一TDD过程中, 每个环节都很重要,缺一不可。和别人不同的是,我会更看重“重构”这一容易被忽视的过程。因为有了这一环节的存在,迫使我把三步曲的实施时间尽可能的小。让我对代码的把控更游刃有余,同时也让我不停的思考代码的价值和质量。也因为有了这个过程,让我不再每天作为码农,机械的把需求翻译成代码。而是在这个过程中更像是设计师,设计代码。
没错,好的代码需要设计,更需要思考,借助重构,会更容易实现这个目标