TDD 恩仇錄



早在我加入目前公司的第二年,大概是 2004 年左右,我就拿到一本同事給我的 Extreme Programming 的書籍。在書上第一次看到 TDD,看書上寫的,TDD 看來是相當美好的。所以當年曾經想要進行嘗試,不過當然最後是失敗了。失敗的原因是 - "那有時間這麼搞,快寫 code 吧"

四年前,有一段時間致力於將內部使用的一個模組改寫成 C++,那時候還是想要再嘗試一遍 TDD,不過寫了兩天,就又放棄了。這次並不是因為時間壓力,而是寫起來很彆扭,又急著想要看到結果,所以寫著寫著,TD 就不見了,只剩下最後那個 D。這個專案後來我還是加了不少測試,但是因為不是邊寫邊開發,有些測試變得相當困難,所以測試 coverage 也不高。

這次之後,我幾乎對 TDD 已經死心,半年前看到 Uncle Bob 為 Kenbeck 的實作模式一書所寫的序,對於書中 TDD 的描述,讓我又再次讚嘆不已,但我認為那是大師才做得到的境界,凡人不可能達到。所以看過,也就放掉了。

前幾天,利用坐高鐵下南部的來回時間,將 Uncle Bob 的 Clean coder 翻了一遍,我終於知道,為什麼我 TDD 總做不來。其實就像一個連轎車都不會開的人,想要開飛機就會很困難,因為你不夠熟練。在 Clean coder 的第六章,Uncle Bob 寫到他每天都要花一些時間進行程式寫作的練習。而且將這種練習比喻成彈鋼琴或者運動選手的每日基礎練習,頓時讓我豁然開朗:TDD 是一個寫程式的方式,如果沒有經過練習,就開始應用在中大型的專案,當然很難會成功。就像一個鋼琴選手,每天不練習,就直接上台參加蕭邦鋼琴大賽,結果應該不難想像。

所以從現在開始,想了解新的語言或寫程式的方式,不要只是念書,該練習。如果你只想要練習 TDD,又不想花一大把時間去架設環境,安裝軟體,可以試試 cyber dojo。只要有 web browser 就可以做練習,還支援一大票 language 喔。






2 comments