TDD - 测试驱动开发

TDD是什么

TDD是测试驱动开发,是敏捷开发中的一项核心实践和技术,TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定产品的需求。

TDD的原则

① 没有失败的测试就不能写代码
② 只写恰好让测试通过的代码

TDD的步骤

先思考,再写测试和代码

① 花10分钟拆解任务,把任务清单写下来
② 先写测试,后写代码

记住: 任何需求,都要先思考10分钟,再写 ! ! !

不要全凭本能写代码,需求都没整清楚,你写啥代码 ?
要先拆分需求,理清优先级

测试就是需求

  • 需要学会用测试来准确表达自己对需求的理解,用测试作为与客户沟通的桥梁,用测试框定需求的范围。
    • 这个过程设计的好,整个需求的开发会很平稳,工作量评估会很准确,出错的可能性会很低,合理拆分任务,是良好建造过程的基础。
  • 在开发遇到困难的时候,要学会把测试的步伐放得小一点,再小一点,从最简单的问题开始,每次专注写一个测试,让一个测试通过。

框定需求范围

如果在任务中遇到了困难,有很大可能是对需求的范围框定得不够清晰,不知不觉中把需求扩大化了。
在动手写代码之前,我们要首先弄清需求的范围和优先级,并用测试的形式把它记录下来。
我们日常软件开发中需求不清晰的情况很多,不用可执行的测试的形式写下来,很可能做到一半才发现,需求没整清楚。

不要一次性考虑太多事情

如果在拆解任务过程中遇到了困难,很有可能是对需求的范围框得不够清晰,不知不觉中把需求扩大化了。
我们是否首先思考过,这个需求可以分解成几个大块?各个大块的优先级顺序是什么?
在动手写代码之前,我们要首先弄清需求的范围和优先级,并用测试的形式把它记录下来。

小步快跑

在开发遇到困难的时候,要学会把测试的步伐放得小一点、再小一点,从最简单的问题开始,每次专注写一个测试,让一个测试通过。

保持纪律

人的大脑容量是有限的,一旦问题的复杂度达到一定水平,大脑的容量就不够了,必须依靠有效的工作方法和严格的工作纪律,才能把复杂问题拆解成简单任务,然后各个击破。

其他建议

封装所有的容器

封装所有的容器,对外暴露的,只能是对象,容器和对象的区别在于,它有没有一个合适的名字。

刻意练习的节奏

1、多次重复的练习;
2、针对自己不足的领域练习;
3、每次练习后对结果反思。

所有能力的获得,一定都建立在大量练习的基础上。

思考

通过TDD这种按部就班的方式,小步快跑的方式,及时反馈的方式,来把复杂问题简单化。

对于我们实际开发中的话,特别对于我们移动开发来说,TDD现在是没有普及的,还有些大佬也是公开反对TDD,他们认为TDD更像是完美情况下的代码,是程序员的一种玩具,在真实的项目中,我们的程序是非常复杂的。

对于TDD的实践的话,期待大家可以去尝试吧,我自己的话,现在也没有太多的尝试过。但是对于TDD这样一种形式,一种思想,我觉得是值得我们借鉴的,在开发之前,现在很多程序员,包括我自己,一接到需求就开始写代码了,这其实是有很大问题的。

但TDD的话就是必须要求你拿到需求之后,先写测试,这样的好处就在于,你会先把需求理清楚了,再去写代码,我觉得这个思想是值得我们借鉴的。任何一个思想来说,其实不一定完全正确,但是肯定是有他的精华在里面的,我们可以汲取它的精华,成为我们自己的东西。

你可能感兴趣的:(代码优化,TDD,测试驱动开发,单元测试)