[心得] 重構完全hard-code實現的tennis (影片)
補上網頁好讀版:
https://tdd.best/code-4-fun/fake-it-till-you-make-it/
最近蠻喜歡錄一些 coding 的影片分享給一些有興趣的朋友看,
其實沒打算當作啥教學性質,單純覺得抒壓。
我也覺得應該會有一些朋友跟我一樣,
不管是自己coding或看別人coding影片,會覺得挺療癒的。
這次設計的主題,是重構完全 hard-code 實現的 tennis 產品程式碼。
搭配著最近剛翻譯完 Kent Beck 的《TDD by Example》,
裡面介紹到「假實作」的技巧:Fake it till you make it.
[註] 天瓏可預購,農曆年前會出版:
https://www.tenlong.com.tw/products/9789864345618?list_name=srh
這回用 Java 試著把這些寫死所有內容的實作,一步一步轉換成真實的 tennis 邏輯。
① YouTube 影片:https://www.youtube.com/watch?v=d70T_lqxBmY
② GitHub commit history: http://bit.ly/fake-it-java
正向的 TDD 設計 tennis 影片可參考下面連結,
文中有多種語言的用同樣方式實現 tennis 的過程。
https://tdd.best/courses/extreme-developing-202109/
我沒打算廣告活動,純粹只是多種語言的示範影片都放在那上面。
因為 2021 年到年底的培訓已經全額滿了,所以沒有廣告的必要了。
可能會有些人覺得某一些 extract method 的內容可能有些違背真實的商業邏輯,
例如 isDeuce() 怎麼可以只判斷 firstPlayerScoreTimes >=3 而已?
好問題,這個空間就留給各位去思考跟調整了。
我自己從那全都寫死的判斷式跟回傳結果「重構」回來,
享受蠻多樂趣的,建議大家可以玩玩看。
順帶一提,你可能覺得「這不叫重構,這是在實現商業邏輯」,
不瞞你說,我原本也這樣覺得。
但 Kent Beck TDD 裡面的「重構」是包含了「從 假實作 到 真邏輯」的部份,
我之前一直覺得這個動作是綠燈的一環,沒想到是被歸類到「重構」那個步驟。
看完書裡前後的脈絡跟解說,也是有他的道理在。
註:這次翻譯其實最大的貢獻,在於我跟 Kent Beck 提議,把書裡面範例的演進過程,
透過 git commit 並放到 GitHub 上公開,讓所有對 TDD 感興趣的朋友,以及讀者,
既能看到全貌,又能看到每一步的關鍵差異,還能從任何一個時間點往下練習。
Kent Beck 人是真的很大方跟 nice,我們都覺得這樣對這個世界是好的,
對想了解 TDD 的朋友是有蠻大幫助的,所以他同意我準備好內容,直接公開出來。
相關資訊可參考:https://tdd.best/book/tdd-by-example/
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.6.74 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1612102935.A.10A.html
※ 編輯: landlord (111.249.6.74 臺灣), 01/31/2021 22:23:02
※ 編輯: landlord (111.249.6.74 臺灣), 01/31/2021 22:23:36
※ 編輯: landlord (111.249.6.74 臺灣), 01/31/2021 22:38:33
推
01/31 22:40,
3年前
, 1F
01/31 22:40, 1F
推
01/31 23:36,
3年前
, 2F
01/31 23:36, 2F
推
01/31 23:43,
3年前
, 3F
01/31 23:43, 3F
推
01/31 23:58,
3年前
, 4F
01/31 23:58, 4F
推
02/01 01:48,
3年前
, 5F
02/01 01:48, 5F
→
02/01 02:10,
3年前
, 6F
02/01 02:10, 6F
推
02/01 02:47,
3年前
, 7F
02/01 02:47, 7F
推
02/01 04:16,
3年前
, 8F
02/01 04:16, 8F
推
02/01 08:40,
3年前
, 9F
02/01 08:40, 9F
推
02/01 09:33,
3年前
, 10F
02/01 09:33, 10F
推
02/01 10:19,
3年前
, 11F
02/01 10:19, 11F
推
02/01 11:43,
3年前
, 12F
02/01 11:43, 12F
推
02/01 12:34,
3年前
, 13F
02/01 12:34, 13F
※ 編輯: landlord (111.249.6.74 臺灣), 02/01/2021 15:12:06
推
02/01 20:14,
3年前
, 14F
02/01 20:14, 14F
推
02/01 22:04,
3年前
, 15F
02/01 22:04, 15F
→
02/02 02:13,
3年前
, 16F
02/02 02:13, 16F
推
02/02 02:25,
3年前
, 17F
02/02 02:25, 17F
推
02/02 23:52,
3年前
, 18F
02/02 23:52, 18F
推
02/03 20:02,
3年前
, 19F
02/03 20:02, 19F
推
02/03 20:53,
3年前
, 20F
02/03 20:53, 20F
→
02/04 14:01,
3年前
, 21F
02/04 14:01, 21F
→
02/04 14:07,
3年前
, 22F
02/04 14:07, 22F
→
02/05 22:44,
3年前
, 23F
02/05 22:44, 23F