2012年4月9日 星期一

怎麼寫不可測試的程式碼,大家應該是一看就懂

作者: yoco315 (眠月) 看板: Soft_Job
標題: Re: [閒聊] 笑談軟體測試的幾個階段(四) 累積測資
時間: Mon Mar 26 22:49:29 2012

※ 引述《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

--
[1;36mTo iterate is human, to recurse, divine.
[1;32m遞迴只應天上有, 凡人該當用迴圈.                  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

沒有留言:

張貼留言

您好.本資料庫並非第一手資料.如果你有對文章作者的詢問,意見與需求,請自行找尋文章作者並提供意見,謝謝.