07/07/22TDD在XP中处于核心地位
||
代码整洁可用
1)可预测
2)思考另一种更好的方法
……
自动测试失败 —> 重写代码
消除重复设计
不可运行 —> 可运行 —> 重构
QA:被动 —> 主动
PM:精确把握开发进度
SE:节约时间
||
每天都有新功能的软件成品
我们需要
勇气!
防倒转装置
编程解决的问题越复杂,每次测试所覆盖的范围就应该越小
《解析极限编程》
(by Dia)
改变了编程习惯
No:软件的安全性,并行性
只保留一个球在空中!
模式拷贝
模式一般都是半成品,用到你的项目中还要再回一次炉。
TDD Steps:
1. add a new test quickly
2. run all tests, failed
3. modify
4. run all tests again, ok!
5. refactor
我们不是从建立对象开始,而是从测试开始!
消除程序中的重复设计就是消除
依赖关系。
||
SQL代码到处都是,etc
总体流程:
1. 写一个测试程序
Story、interface
2. 让测试程序运行
1)伪实现
2)显明实现——将真实的实现代码键入
尽快地让测试程序可运行是压倒一切的中心任务!
3. 编写合格的代码
clean code that works!
首先解决“可用”的问题,再解决“代码整洁”的问题。
07/07/23Ch3 一切均等
数值对象(Value Object)
TDD <== 三角法
||
我们只有在例子达到2个或更多时才对代码实施一般化。
Ch4 私有性
我们并非要追求绝对的完美。
通过表述任何事物都从代码和测试两条线路来走,我们希望尽可能地减少缺陷,以在前进的路上增强自信。
Ch5 法郎在诉说
当瑞士法郎与美元的兑换率为2:1的时候,5美元+10瑞士法郎=10美元快捷方式?
拷贝美元Dollar的实现代码,并用法郎Franc代替美元Dollar。
通过小的测试先行动起来;
无所顾忌地通过
复制和编辑来写出这个测试程序;
||
让测试程序工作
自我保证在重复设计消除之前绝不回家。
07/07/27Ch6 再谈一切均等
丑陋的代码拷贝和粘贴
||
一个类继承另一个类 bad!
寻找一个共同的父类 good!
你将经常在没有足够测试程序的代码中实施TDD(至少未来十年左右)。当没有足够的测试程序时,你一定会遇到
不被测试程序支持的重构。
写出你希望拥有的测试。如果你不这样做,那么迟早会在重构时出现麻烦。
Ch7 苹果和桔子
比较法郎对象与美元对象
things to do:
1. 着手解决一个困扰我们的难题并将它转化为一个测试程序
2. 用一种合理但不完美的方法(getClass())使测试程序运行通过
3. 除非有更好的动机,否则不要引入更多的设计
Ch8 制造对象
美元/瑞士法郎之间的重复设计