TDD 我可能不會喜歡你

先說結論,我覺得TDD(TDD是種引入測試的開發方法,簡單來說就是先寫測試,再做產品)推不起來,為什麽?

        首先(客戶/老闆)不會為測試付錢,他們只願意替產品付錢,測試是品質的附加產品,所以如果想成功(推銷/推廣)測試,可能要你的(客戶/老闆),願意為了品質(付錢/給更多資源)。



        再來開發期間風險很高與變數很多,對流程或架構還不是很清楚,TDD要有整個架構流程都完完整整,在腦海中,要達到這種地步,不是類似的東西做過很多次,熟能生巧,就是有過人的規劃能力,但這兩種條件都不利教學與推廣。

        所以,我不寫測試嗎?不!我寫!只是我採用的方法是TAD(Test After Development),開發後再寫測試的做法,為什麼?我為什麼這樣做?我怎麼做的?這裡引用一句我很喜歡的話

好的架構是演化出來,而不是設計出來

        路就在那,只是有點不明顯,鋪上柏油,讓大家看得更清楚走的更順,我的答案就是重構,向測試前進XD,原本的架構,無法測試,利用重構的手法,將架構修改成可以測試的架構,有成品再來重構改善會容易很多,重構是一步一腳印的小改變,TDD要非常清楚的規劃"完美"的架構,不是人人能執行的做法,是推不起來的。

        就像李小龍的武器雙截棍,曾經在李小龍傳中看過,警局看見李小龍,將雙節棍用得非常有威力,於是就請他訓練警局裡的人使用雙節棍,結果大家還沒遇見歹徒,就差點先把自己打死,警棍跟雙節棍的學習曲線,與使用者的素質要求相差太大,警棍簡單好上手,你可以期待人人會用警棍,甚至學個幾招就能威力大增,但你卻不能期待人人都是李小龍。

        詠春拳VS截拳道,有陣子很迷李小龍,曾經看過一個故事,李小龍在學習詠春與高強度自我訓練多年後,自創了截拳道,有次他跟師傅討論武學,抱怨學生資質駑鈍,無法學會截拳道,後來他師傅說,你的截拳之道,是因為你豐富的實戰經驗與高強度的自我訓練而來,這些東西你的學生有嗎?若沒有,如何體會你的截拳之道?你以為你發明了截拳道,殊不知你的截拳道其實是你李小龍的詠春........。

       你有發現似乎有少了甚麼嗎?

留言