07/07/22TDD在XP中處于核心地位
||
代碼整潔可用
1)可預(yù)測
2)思考另一種更好的方法
……
自動(dòng)測試失敗 —> 重寫代碼
消除重復(fù)設(shè)計(jì)
不可運(yùn)行 —> 可運(yùn)行 —> 重構(gòu)
QA:被動(dòng) —> 主動(dòng)
PM:精確把握開發(fā)進(jìn)度
SE:節(jié)約時(shí)間
||
每天都有新功能的軟件成品
我們需要
勇氣!
防倒轉(zhuǎn)裝置
編程解決的問題越復(fù)雜,每次測試所覆蓋的范圍就應(yīng)該越小
《解析極限編程》

(by Dia)
改變了編程習(xí)慣
No:軟件的安全性,并行性
只保留一個(gè)球在空中!
模式拷貝
模式一般都是半成品,用到你的項(xiàng)目中還要再回一次爐。
TDD Steps:
1. add a new test quickly
2. run all tests, failed
3. modify
4. run all tests again, ok!
5. refactor
我們不是從建立對象開始,而是從測試開始!
消除程序中的重復(fù)設(shè)計(jì)就是消除
依賴關(guān)系。
||
SQL代碼到處都是,etc
總體流程:
1. 寫一個(gè)測試程序
Story、interface
2. 讓測試程序運(yùn)行
1)偽實(shí)現(xiàn)
2)顯明實(shí)現(xiàn)——將真實(shí)的實(shí)現(xiàn)代碼鍵入
盡快地讓測試程序可運(yùn)行是壓倒一切的中心任務(wù)!
3. 編寫合格的代碼
clean code that works!
首先解決“可用”的問題,再解決“代碼整潔”的問題。
07/07/23Ch3 一切均等
數(shù)值對象(Value Object)
TDD <== 三角法
||
我們只有在例子達(dá)到2個(gè)或更多時(shí)才對代碼實(shí)施一般化。
Ch4 私有性
我們并非要追求絕對的完美。
通過表述任何事物都從代碼和測試兩條線路來走,我們希望盡可能地減少缺陷,以在前進(jìn)的路上增強(qiáng)自信。
Ch5 法郎在訴說
當(dāng)瑞士法郎與美元的兌換率為2:1的時(shí)候,5美元+10瑞士法郎=10美元快捷方式?
拷貝美元Dollar的實(shí)現(xiàn)代碼,并用法郎Franc代替美元Dollar。
通過小的測試先行動(dòng)起來;
無所顧忌地通過
復(fù)制和編輯來寫出這個(gè)測試程序;
||
讓測試程序工作
自我保證在重復(fù)設(shè)計(jì)消除之前絕不回家。
07/07/27Ch6 再談一切均等
丑陋的代碼拷貝和粘貼
||
一個(gè)類繼承另一個(gè)類 bad!
尋找一個(gè)共同的父類 good!
你將經(jīng)常在沒有足夠測試程序的代碼中實(shí)施TDD(至少未來十年左右)。當(dāng)沒有足夠的測試程序時(shí),你一定會(huì)遇到
不被測試程序支持的重構(gòu)。
寫出你希望擁有的測試。如果你不這樣做,那么遲早會(huì)在重構(gòu)時(shí)出現(xiàn)麻煩。
Ch7 蘋果和桔子
比較法郎對象與美元對象
things to do:
1. 著手解決一個(gè)困擾我們的難題并將它轉(zhuǎn)化為一個(gè)測試程序
2. 用一種合理但不完美的方法(getClass())使測試程序運(yùn)行通過
3. 除非有更好的動(dòng)機(jī),否則不要引入更多的設(shè)計(jì)
Ch8 制造對象
美元/瑞士法郎之間的重復(fù)設(shè)計(jì)