一、什么是TDD
TDD即“测试驱动开发”,编程领域中指在编写实际生产代码之前,先编写测试用例(单元测试),将要测试的生产代码所要遇到的使用情景全部包裹在测试用例中,再编写能使测试用例通过的生产代码,以此保证在生产代码完成后能保证在各种使用场景中的正常运行。
二、TDD的具体运用方式
当我们要为某一项功能(最小功能或微小功能)编写代码的时候,先为这项功能创建测试用例,通过从一般到特殊,从普通到边界的原则逐步完善测试用例,并且在每一步中修改实际生产业务代码,使实际业务代码能够刚好通过每一阶段的测试用例,并且在完善测试用例的过程中对实际业务代码不断进行消缺和重构,使最后的实际生产业务代码在保证功能完善的情况下依然保持简明。
TDD更重要的是一种思想,在编写实际生产业务代码之前,我们应该尽可能想到(预测)这些代码的使用场景,并针对这些不同的使用场景进行处理,在处理的过程中对代码进行消缺和重构(简单来说就是消除代码冗余,将相似的代码进行合并提级,同时避免无用的代码设计)。
三、TDD的作用是什么
第一个作用就是培养先做计划再实施的思维逻辑。TDD实际上就是相当于在你打算做一件事之前,先针对这件事做一个计划,列举做这件事的步骤,每一步会遇到什么情况,以及完成每一步的标志是什么,如此这般,当这个计划完成之后,你做的这件事就变得相当可控了。
第二个作用就是使代码的细粒度更佳,可测试性更强,逻辑更加完善,基于此使程序的更加健壮。显而易见,一行测试代码是无法测试整个程序的,为了使代码更容易测试,我们需要尽可能的将尽可能多的代码设计成尽可能小的独立单元,而不是将一个复杂的功能实现都写在一个方法里。同时,在测试用例中,我们会尽可能的测试代码所有的使用场景,为了使测试用例通过,我们在编写实际的生产业务代码的时候就不得不对各种边界情况进行处理,能够避免很多的代码设计漏洞。
第三个作用就是提高优秀代码设计能力。执行TDD流程能够使我们对业务实现的划分更加精细、可控,有利于我们对复杂业务的拆分,对特殊情况的处理。
第四个作用就是前人栽树,后人乘凉。
四、TDD的优缺点
优点:见第三小节。
缺点:1.初期使用很难适应,不符合人类的行为习惯,很少有人天生就喜欢做完很完备的计划再去做事,相对于实际业务代码开发,“准备工作”比较长。
2.增加开发的工作量,特别是在TDD应用的初期阶段,对开发时间影响比较大。
3.灵活性相对降低
五、TDD的应用场景
对时间要求不紧迫的项目,以及体量比较大的项目。
六、个人理解
架构先验,行为倒逼需求分析,预测指导实践,计划规范实践。TDD在思想上是一种逆向思维,从结果推导过程。但在解决实际业务问题的架构设计上却是一种完整的正向思维,从个例到一般,从一般到特例,从基础到复杂,从复杂到协调,从刚需到一般性需求,从一般性需求到需求的平衡分配。TDD的所得结果(指通过TDD产生的业务流程--在编程中相当于业务代码)可能不是完全的最优解,但是一般性的最优解,可以作为一般性的标准适用于大多数场景。
如有遗漏和错误,欢迎指正。
网友评论