补上网页好读版:
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/