這次設計的主題,有別於以往 TDD 開發 tennis,而是重構完全 hard-code 實現的 tennis 產品程式碼。類似下圖所示:
搭配著最近剛翻譯完 Kent Beck 的《TDD by Example》,裡面所介紹到「假實作」的技巧:Fake it till you make it.
※ 請參考:《TDD By Example》範例說明
這次示範的語言是用 Java,如何把這些寫死所有內容的實作,一步一步轉換成真實的 tennis 邏輯。
示範與說明影片如下:
(如果你覺得這樣的影片對你有幫助,對別人有幫助,邀請你來幫影片按讚、訂閱頻道,就是對我最大的鼓勵)
也附上 GitHub 的 repo 相關資訊:
如果你想知道的是「從無到有,怎麼用 TDD 來開發 tennis」,請參考 極速開發 上的示範影片,上面有各種語言版本。
可能會有些朋友會覺得某一些 extract method 的內容可能有些違背真實的商業邏輯,例如 isDeuce()
怎麼可以只判斷 firstPlayerScoreTimes >=3
而已?
好問題,這個空間就留給各位去思考跟調整了。
我自己從那堆全都寫死的判斷式跟回傳結果「重構」回來,享受蠻多樂趣的,建議大家可以試著玩玩看。
順帶一提,你可能覺得「這不叫重構,這是在實現商業邏輯」,不瞞你說,我原本也這樣覺得。但 Kent Beck TDD 裡面的「重構」是包含了「從 假實作 到 真邏輯」的部份,我之前一直覺得這個動作是綠燈的一環,沒想到是被歸類到「重構」那個步驟。看完書裡前後的脈絡跟解說,也是有他的道理在。