TDD - 测试驱动开发
TDD是什么
TDD是测试驱动开发,是敏捷开发中的一项核心实践和技术,TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定产品的需求。
TDD的原则
① 没有失败的测试就不能写代码
② 只写恰好让测试通过的代码
TDD的步骤
先思考,再写测试和代码
① 花10分钟拆解任务,把任务清单写下来
② 先写测试,后写代码
记住: 任何需求,都要先思考10分钟,再写 ! ! !
不要全凭本能写代码,需求都没整清楚,你写啥代码 ?
要先拆分需求,理清优先级
测试就是需求
需要学会用测试来准确表达自己对需求的理解,用测试作为与客户沟通的桥梁,用测试框定需求的范围。
- 这个过程设计的好,整个需求的开发会很平稳,工作量评估会很准确,出错的可能性会很低,合理拆分任务,是良好建造过程的基础。
- 在开发遇到困难的时候,要学会把测试的步伐放得小一点,再小一点,从最简单的问题开始,每次专注写一个测试,让一个测试通过。
框定需求范围
如果在任务中遇到了困难,有很大可能是对需求的范围框定得不够清晰,不知不觉中把需求扩大化了。
在动手写代码之前,我们要首先弄清需求的范围和优先级,并用测试的形式把它记录下来。
我们日常软件开发中需求不清晰的情况很多,不用可执行的测试的形式写下来,很可能做到一半才发现,需求没整清楚。
不要一次性考虑太多事情
如果在拆解任务过程中遇到了困难,很有可能是对需求的范围框得不够清晰,不知不觉中把需求扩大化了。
我们是否首先思考过,这个需求可以分解成几个大块?各个大块的优先级顺序是什么?
在动手写代码之前,我们要首先弄清需求的范围和优先级,并用测试的形式把它记录下来。
小步快跑
在开发遇到困难的时候,要学会把测试的步伐放得小一点、再小一点,从最简单的问题开始,每次专注写一个测试,让一个测试通过。
保持纪律
人的大脑容量是有限的,一旦问题的复杂度达到一定水平,大脑的容量就不够了,必须依靠有效的工作方法和严格的工作纪律,才能把复杂问题拆解成简单任务,然后各个击破。
其他建议
封装所有的容器
封装所有的容器,对外暴露的,只能是对象,容器和对象的区别在于,它有没有一个合适的名字。
刻意练习的节奏
1、多次重复的练习;
2、针对自己不足的领域练习;
3、每次练习后对结果反思。
所有能力的获得,一定都建立在大量练习的基础上。
思考
通过TDD这种按部就班的方式,小步快跑的方式,及时反馈的方式,来把复杂问题简单化。
对于我们实际开发中的话,特别对于我们移动开发来说,TDD现在是没有普及的,还有些大佬也是公开反对TDD,他们认为TDD更像是完美情况下的代码,是程序员的一种玩具,在真实的项目中,我们的程序是非常复杂的。
对于TDD的实践的话,期待大家可以去尝试吧,我自己的话,现在也没有太多的尝试过。但是对于TDD这样一种形式,一种思想,我觉得是值得我们借鉴的,在开发之前,现在很多程序员,包括我自己,一接到需求就开始写代码了,这其实是有很大问题的。
但TDD的话就是必须要求你拿到需求之后,先写测试,这样的好处就在于,你会先把需求理清楚了,再去写代码,我觉得这个思想是值得我们借鉴的。任何一个思想来说,其实不一定完全正确,但是肯定是有他的精华在里面的,我们可以汲取它的精华,成为我们自己的东西。
还没有评论,来说两句吧...