看板 Soft_Job 關於我們 聯絡資訊
※ 引述《TonyQ (自立而後立人。)》之銘言: : ----------------------------------- : 本文開始 : ----------------------------------- : 上一篇我們談到程式碼的可測試性,然後你會發現, 看了你經歷這麼多,慢慢靠自己體悟到可測試性的重要,很感動 XD 也很慶幸自己,在還沒有經歷這些之前,就已經被灌輸可測試性的重要。 忘記是在什麼地方看到別人推薦這個影片: 《Unit Testing》http://youtu.be/wEhu57pih5w GoogleTechTalks
影片開始沒多久,就直接點明重點: 「我沒辦法教你寫測試,只能教你寫出可測試的程式碼。」 因為不可測試的程式碼,交給誰都沒辦法測試(意指單元測試)。 很多人都會面臨一個問題:「我不知道怎麼測我的程式碼,但是我知道怎麼測你的!」 兩份程式碼的差異就在可測試性。 怎麼寫可測試的程式碼,比較難教, 但是怎麼寫不可測試的程式碼,大家應該是一看就懂 XD 《How to Write 3v1L, Untestable Code》http://tinyurl.com/633e97 其實不用看就懂了,大家平常寫出來的就是不可測試的程式碼 XD 我自己第一次看的時候真的很訝異: 「天哪……我從來沒想過我寫的程式碼根本是不可測試的……」 好在作者也有說,他自己也花了好幾年才學會這件事, 要寫出可測試的程式碼是需要學習跟練習的。 文章裡某些點我初看覺得根本沒道理而且違反直覺, 但是後來在工作上就慢慢體會到其價值。 慢慢的,我看一份程式碼好壞的標準改變了, 回頭看到自己以前的程式就覺得很多地方架構設計不良。 我想到我在某處曾經看到一篇 D Programming Language 的文章, 講的是 pure 這個用來修飾函數的關鍵字,描述 pure function 的特點。 pure function 就是這個函數的結果僅跟傳給他的參數有關。 (pure member function 的結果僅跟傳入的參數跟 data member 有關) 後來我想想,那篇《How to Write 3v1L, Untestable Code》, 講的好幾點其實都是在講 non-pure function。 所以後來我領悟一件事,要怎麼寫 testable code? 只要寫程式的時候把一個想法惦念在心上就可以了: 「我的 function 要盡可能的 pure」 只要滿足這條,寫出來的程式碼就很接近 testable co -- To iterate is human, to recurse, divine. 遞迴只應天上有, 凡人該當用迴圈.   L. Peter Deutsch -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 182.235.170.158
yoco315:阿勒... 不小心按到送出... 算了 XDDD 03/26 22:50
Ting1024:感謝分享,有空再來體會看看 03/26 23:23
loveme00835:XD 03/26 23:30
ledia:同意, 如何寫出 testable 的 code 比較重要 03/26 23:35
tyc5116:藉這標題問一下,能不能寫個範例,說明可測試和不可測試的 03/27 07:22
tyc5116:差別啊?坊間的書有去找過了,沒找到我想要看的 03/27 07:22
jenallen:http://alturl.com/3k2sw <- 另一篇經驗談 03/27 08:55
TonyQ:推~ 03/27 10:25
pracinverse:push 04/13 00:29