我的TDD感悟(四)--TDD的“重构”

在我的TDD感悟(三)中,谈到了“绿”的开发步骤。很多人在实现了这一步后,就结束了。甚至这一步不是以小步快跑的方式循环执行TDD三步曲。那么“重构”在TDD中的位置是什么呢?

TDD 是否只关注“绿”

TDD中“绿”当然很重要,重要之处在于满足了需求。不过这个是最基本的,即使没有TDD,我们也需要保证代码的正确性。只不过TDD中的“绿”是分成若干个小阶段来实现的,而不是一口气实现“绿”的过程。那么我们为什么要把“绿”分布在若干个小阶段来实现呢。我认为主要就是为了重构,“绿”是为了实现代码,“重构”是为了整理代码。如果忽略了“重构”, 那么代码能运行, 但是代码的组织结构,或者代码的可维护性和可扩展性就没那么好了。

TDD中“重构”的作用

“重构”在这一个过程中起到了压舱石的作用。没有经历过重构的代码,一般代码的质量都是一般的,可维护性和可扩展性是较差的。但是相对于一般软件的集中式重构,分阶段重构,小步快跑方式的重构有以下几个优点:

  • 重构紧挨着“绿”的过程,有测试代码保驾护航,重构更有信心
  • 每次重构耗时不长,大脑不需要处理非常多的信息,有利于集中注意力,也让重构的质量更有保证
  • 经常的重构,让大脑不停思考什么是好的代码, 如何实现好的代码有更深的感悟。时间一长,这些思考的累积,让自身对于编程的感悟更多,同时对于优质的代码有更深刻的认知,有利于写出更优秀的代码

使用TDD的时候,我们从中获得了什么

经过不停的迭代三步曲的过程,我们有了如下收获:

  • 获得了测试用例,后续的接手人,也更方便对接业务
  • 获得了单元测试代码,日后的代码维护更清楚
  • 实现了业务逻辑,提高了边界的测试,提高了业务逻辑的质量
  • 通过“重构”,获得了质量越来越好的代码

在这一TDD过程中, 每个环节都很重要,缺一不可。和别人不同的是,我会更看重“重构”这一容易被忽视的过程。因为有了这一环节的存在,迫使我把三步曲的实施时间尽可能的小。让我对代码的把控更游刃有余,同时也让我不停的思考代码的价值和质量。也因为有了这个过程,让我不再每天作为码农,机械的把需求翻译成代码。而是在这个过程中更像是设计师,设计代码。

没错,好的代码需要设计,更需要思考,借助重构,会更容易实现这个目标

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 做TDD是为什么? 关于TDD的概念、工具、技巧等,经典的书籍材料可能介绍的更为全面细致。这篇文章想分享的是从一个...
    武可阅读 2,640评论 2 21
  • 我在参与的开发项目以及咨询项目中,都有实践TDD的经验。直至今日,我仍然会在某些功能开发时采用TDD的方式实现功能...
    _张逸_阅读 1,160评论 0 6
  • 本文结构: 什么是 TDD 为什么要 TDD 怎么 TDD FAQ 学习路径 延伸阅读 什么是 TDD TDD 有...
    李浪溪_WaterLee阅读 75,813评论 16 168
  • TDD是个好东西,推广时,需从Why/what/how来说服别人,结合最近看的一些资料,来说明一下问题: 1、单元...
    而立不惑之年阅读 1,606评论 2 2
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,038评论 2 89