Re: [閒聊] 笑談軟體測試的幾個階段(四) 累積測資
※ 引述《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
→
03/26 22:50, , 1F
03/26 22:50, 1F
推
03/26 23:23, , 2F
03/26 23:23, 2F
推
03/26 23:30, , 3F
03/26 23:30, 3F
推
03/26 23:35, , 4F
03/26 23:35, 4F
推
03/27 07:22, , 5F
03/27 07:22, 5F
→
03/27 07:22, , 6F
03/27 07:22, 6F
→
03/27 08:55, , 7F
03/27 08:55, 7F
推
03/27 10:25, , 8F
03/27 10:25, 8F
推
04/13 00:29, , 9F
04/13 00:29, 9F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 4 篇):