SAY討論區

標題: 一切由測試開始 - 業界資訊 [打印本頁]

作者: 晚安天使    時間: 2013-9-25 22:05:59     標題: 一切由測試開始 - 業界資訊

020014r5bepy1x4yh.jpg
開發軟件有很多原則,其中一條是 YAGNI,You ain’t gonna need it,意思是只開發需要用到的東西就好了,不要想太多。可惜偏偏越有經驗的開發者,越會想得多,這段代碼日後如何維護?有沒有效能問題?需要 logging 嗎?日後可能要 transaction?然後就會做很多預備功夫,「留位」以應付日後改變,又然後很久所其之改變沒有來,再然後那些代碼日漸腐化。
YAGNI 的原因,是要做到 simple design,不要將不必要的複雜性引入程式裏。但日後的改變要如何應付呢?YAGNI 背後其實有很多「配套」,總稱是 incremental design,方法是常用 refactoring 改善設計,減少重複,本身體質良好的話,就能擁抱改變。
Refactoring 理論上是用一連串簡單且可控制的代碼改動,只做到內部結構重組,但外部行為不變。但實際上如此改動仍是有風險的,所以一般講 refactoring 的都提醒大家,要有測試做覆蓋。每做一個改動,就執行一次測試,看看有沒有改爛了東西。有了這安全網,refactoring 就變得可以常常做了,設計也能經常改善。
這堆測試當然是在開發時寫,或甚是開發之前就寫,也就是 test-driven developement (TDD)。傳統古法先寫代碼,再寫測試,是相當沒趣的,開發者會想直接執行代碼,而沒有誘因去寫測試。先寫測試見紅,再寫代碼見綠,然後 refactor 是 TDD 的基本步1。 通過一小步一小步,每幾分鐘就知道自己剛寫的沒錯能執行,而且還得了一堆測試,日後有用。不過提倡 TDD 者經常提醒大家,寫測試只是做設計的手段,不是目的。用 TDD 思考本身就會改變代碼的寫法,所寫的要能單獨被測,元件鬆散耦合。
以前有人問到經典《設計模式》四人幫之一的 Erich Gamma 有關設計模式那種預先佈陣以期改變的做法,有違 simple design 原則。他也說做 up-front design,杞人憂天其實成本昂貴,而 XP (extreme programming) 的人做得才對。XP 人沒有放棄用設計模式,只是用不同手段達成而已。XP 用 TDD 設計,備有測試後就可以安全 refactor,並應用設計模式。
所以說到尾,一切都是由測試開始。


附件: [020014r5bepy1x4yh.jpg] 020014r5bepy1x4yh.jpg (2013-9-25 22:05:59, 0 Bytes) / 下載次數 0
http://forum.go2tutor.com/forum.php?mod=attachment&aid=NDI5NDI2fDY5NTdmNzI0fDE3ODMxNzc4MDJ8MHww
作者: 牛奶陽光    時間: 2013-9-26 02:00:59

看來不錯,回覆一下
作者: hillmen    時間: 2013-9-26 02:06:34

長時間沒來看了 ~~
作者: 花家姐    時間: 2013-9-26 02:07:20

支持你一下下。。
作者: kengtr    時間: 2013-9-26 02:07:39

這樣的貼子,不頂說不過去啊
作者: bobodragon2001    時間: 2013-9-26 02:18:53

強的很,竟然有這樣的文章
作者: 阿迅    時間: 2013-9-26 02:30:43

這個論壇常常都會有一些新鮮的玩意!
作者: 正義西門慶    時間: 2013-9-26 02:32:47

第一次來這論壇..
作者: 切雞飯    時間: 2013-9-26 02:40:24

有才的不在少數啊
作者: HO0907    時間: 2013-9-26 02:41:38

希望大家能幫忙多多分享
作者: andykom28    時間: 2013-9-26 02:47:41

支持一下吧
作者: frankyhui    時間: 2013-9-26 02:47:47

真是有你的!
作者: 牛奶陽光    時間: 2013-9-26 02:49:23

加油!樓主,謝謝分享
作者: ^^SaSabb    時間: 2013-9-26 02:49:57

暈  不信啊
作者: oh~my~gag    時間: 2013-9-26 02:51:54

呵呵,等著就等著...
作者: Tung8887    時間: 2013-9-26 02:58:56

就為賺分嘛
作者: nh88    時間: 2013-9-26 03:20:51

@,@..是什麼意思呀?
作者: juny0385    時間: 2013-9-26 03:21:01

謝謝樓主啊!
作者: HOTSTUDIO阿蚊    時間: 2013-9-26 03:22:59

這個貼不錯!!!!!看了之後就要回復貼子,呵呵
作者: nh88    時間: 2013-9-26 03:24:46

有空一起交流一下  
作者: 牙`蔚    時間: 2013-9-26 03:26:48

人生路長,回覆常常
作者: ng015856    時間: 2013-9-26 05:32:40

頂的就是你
作者: Disy    時間: 2013-9-26 08:23:34

好奇心,我打開看看
作者: 24gold24    時間: 2013-9-28 05:50:51

有些帖子,真的不錯
作者: 尊貴的基佬    時間: 2013-9-29 05:23:33

回貼賺學識,不錯了
作者: 牛奶陽光    時間: 2013-9-30 06:05:00

哈哈,有意思~頂頂 ,繼續頂頂。繼續頂哦  
作者: HOTSTUDIO阿蚊    時間: 2013-10-4 07:10:54

其實回帖算是一種沒德德,所以我快成聖人了
作者: ccseeker2012    時間: 2013-10-4 14:26:08

不管你信不信,反正我信




歡迎光臨 SAY討論區 (http://forum.go2tutor.com/) Powered by Discuz! X2