作者landlord (91)
看板Soft_Job
標題[心得] 重構完全hard-code實現的tennis (影片)
時間Sun Jan 31 22:22:06 2021
補上網頁好讀版:
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
推 ga009900: 推 91哥 01/31 22:40
推 sharku: 推 01/31 23:36
推 shibin: 推 01/31 23:43
推 d0068267: 推 01/31 23:58
推 art1: 強! 02/01 01:48
→ taipoo: 推 02/01 02:10
推 ragena: 91哥的就是要推 02/01 02:47
推 umum29: 91哥推推推 02/01 04:16
推 devilkool: 先推再看 02/01 08:40
推 thumbe31949: 推 02/01 09:33
推 hilliverson: 推 02/01 10:19
推 geroge0820: 先推再看 02/01 11:43
推 super0917: 推推 91哥 02/01 12:34
※ 編輯: landlord (111.249.6.74 臺灣), 02/01/2021 15:12:06
推 world4jason: 推 02/01 20:14
推 azureroki: 第一次看 覺得不用滑鼠很猛 02/01 22:04
→ landlord: 感謝樓上眼尖的朋友發現了,滑鼠只用來做解說用 02/02 02:13
推 htury: 看到鍵盤流,只有推 02/02 02:25
推 smily134: 推 02/02 23:52
推 assanges: 推 02/03 20:02
推 wulouise: 不用滑鼠真的可以節省很多中斷時間 02/03 20:53
→ cia1099: tennis是啥? 02/04 14:01
→ landlord: 網球計分規則 02/04 14:07