文章总览
学习基础
熟悉《设计模式》的基本概念,熟悉《重构》的基本概念,熟悉基本的 Java 语法,熟悉 Eclipse 和 JUnit 的使用,有相对较好的英语基础。
学习过程
第 1 部分,手工输入实例程序,了解 TDD 的方法和过程。重点是理解 TDD 的思路,最好的理解方式就是通过实践的方式理解。
第 2 部分,教你如何用 Python 实现一个符合 xUnit 的测试框架。
第 3 部分,TDD 的模式,这些模式展现 TDD 如何与其他重要思想 ( 例如 : 设计模式、重构等等 ) 一起工作的。
学习目的
编写正确的代码。
学习感悟
道理很简单,操作也很简单,但是我仍然无法明了作者许多重构操作的意图,只是感觉作者可能是从直觉出发写出代码,再通过重构推进测试代码与产品代码之间的解耦。 ( 知其然,不知其所以然 )
可以先跳过第 2 部分,了解 xUnit 如何实现固然重要,但是为此变成先学 Python 就有点跑题了
还可以跳过第 3 部分,这部分都是作者从思想上对 TDD 的总结,俗话说“不吃亏不涨记性”,等自己在项目中吃够了亏再来回顾别人的经验,才会真正共鸣吧。
学习代码
代码很简单,不需要再提供,反而最重要的是自己一定要手工跟一遍,否则无法领会作者的意图。至少,我在豆瓣上看了几个评论,大部分都是看懂了,没感觉。
测试驱动开发的规则
- ( P4 ) 明确设计目标,完善测试代码
- 消除重复设计即是消除依赖关系 ( 测试代码与产品代码之间的依赖关系 ) ;
- 测试驱动开发不是通过一小步一小步来完成的,而是培养一小步一小步开发软件的能力。因为简单的问题可以走快点,复杂的问题就可以走慢点。
- ( P12 ) 完善产品代码
- 完成知道怎么做的产品代码;
- 补充不知道怎么做的产品伪代码。
- ( P14 ) 寻找隐含的开发目标,完善测试代码
- 利用三角法发现产品代码中的问题 ( 三角法 : 当例子不止 1 个的时候才完善代码。可以在没有设计思路的时候,换个角度思考问题 )
- 利用重构解决发现的问题
- ( P17 ) 通过开发的功能来重构测试代码
- ( P33 ) 不打断自己已经在做的工作,如果非要打断也不要在新的工作中花太长的时间,并且不能再次打断这个新的工作。 ( 事不过三 )
- ( P34 ) 找到自己的开发节奏。 ( 一开始慢一点,慢慢加快,再调整回慢,直到找到自己最合适的节奏感 )
- ( P42 ) 删除不需要的子类,会发现测试代码中存在的不需要的测试也可以删除 ( 放弃不需要的东西,会帮助你发现你还需要什么 )
测试程序开发周期的阶段
- 写一个测试程序;
- 让测试程序编译通过;
- 运行测试程序,发现不能运行;
- 让测试程序可以运行;
- 消除重复设计,优化设计结构。