星期二, 4月 27, 2004

How to apply test-first metholody for unknown ?

這句話今天一直在腦海中響著。早上一開始就跟 servlet 的檔案下載奮鬥,這玩意寫了好幾遍了。最後一次寫是用 servlet 產生 JFreeChart 的圖。不過每次都忘得一乾二淨,尤其這次的下載,檔名也是 requirement 之一。最後東翻西翻想到的作法是:

//Foo is a utility to convert request parameter to object.
ServletDownloadable download = Foo.build(request);
response.setHeader("Content-Disposition",
      "attachment; filename=" + download.getFileName());
response.setContentType(download.getContentType());
download.write(response.getOutputStream());

interface ServletDownloadable 是今天奮戰的結晶,有了這個之後,Business Component 只要 implement 這個 interface,就能重覆使用這個 servlet,整個就只要四行程式碼就夠了。這算是 跛腳 的 IOC 吧?畢竟 implement ServletDownloadable 時還是要寫一些 filename, contentType等 servlet 資源的東東,不過最少已經可以不用寫很難的 servlet test (in-container)。問題來囉!在還不知道確切的寫法前,根本想不出要怎麼先寫 test ,想 test 也沒個底。我心中有個聲音這樣說 --- "YES,我的程度還不夠,對API 還不熟,所以沒辦法先寫 test,先把基礎功打好再說。" 可是總覺得不是滋味。寫程式可以說每天都在試新的東西耶,怎麼可能對每個 API 都熟了後才開始寫。所以大半的情況下,都會查書,抄範例,寫個小小的程式來實做。等到學會這個 API 怎麼用時,自己的程式也大概有一點雛型了。這時當然是將這個雛型寫成完成品啦。這中間的流程,test-first 好像很難找到插入點 (程式都完成一半了,還能叫 test-first 嗎?)