SAY討論區
標題:
一切由測試開始 - 業界資訊
[打印本頁]
作者:
晚安天使
時間:
2013-9-25 22:05:59
標題:
一切由測試開始 - 業界資訊
2013-9-25 22:05:59 上傳
下載附件
(0 Bytes)
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,並應用設計模式。
所以說到尾,一切都是由測試開始。
紅綠指的是測試結果,一般支持測試的 IDE 都會用紅錄表示測試結果。 ↩
附件: [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