前情提要
前幾天有個小朋友問我說
「想問問 Tennis KATA 練習的重點是重構嗎
有沒有什麼重構的目標 ?」
反思
這讓我想起一年前寫的文章,[N社筆記] 在公司小規模玩 Coding Dojo
順便記錄一下後續,那個實驗大概在三月隨著參與的人員忙碌而停止了,
然後在後續有再重啟一次,那次是使用 Production Code 進行,
有多一些新的成員,但是也是隨著「忙碌」與「沒時間」而停止,
雖然我心裡比較想直接譙那些不出席又不出聲的人渣一些髒話,
不過我想這就是現實吧。這也引發我後續對 TDD 產鉗的反思。
回答
簡答版
Kata 可以幫助你學習到。
- 需求分析
- 寫測試案例
- TDD 與 Unit Test
- 找到壞味道與重構
- Design Pattern
詳答版
Kata 就是一個簡單的需求,當需求來的時候
你必需先作需求分析,透過需求分析找到測試案例。
如果你想學習 TDD 你可以試著讓每個測試案例趨動你的代碼生成。
也就是說分析測試案例的時候,你要考慮案例的順序與帶來代碼的改變。
試著遵守 TDD 的 紅-綠-重構 準則,
重構包含「測試代碼」與「產品代碼」,
如果是 OO 語言試著去遵循「SOLID原則」,
試著自已隨著 Kata 的過程流動可以看到代碼的變化。
Design Patten 可以當作目標或指引去重構代碼。
不過以 Design Patten 為目標的話,
有兩種可能:
- 在「需求分析」階段覺察適合的 Patten 透過設計案例來趨動
- 在已完成的代碼中覺察適合的 Patten 在不破壞測試的情況下重構(也有可能需要加測試案例)
原始回答
新的問題
要花多少時間才能培育一個懂「OO、TDD、Refactoring、DP」的工程師 ?
這個性價比符合商業利益嗎 ? 職涯規劃上值得嗎 ?
業界真的有需求嗎 ? 還是只要會剪下貼上就好 ?
真正的大公司是這樣開發的嗎 ? 業界很多公司不這樣作不也活得好好的 ?
目前的趨勢會更加的專業分工,這些準繩依舊適用嗎 ?
我還沒有答案,但我還在路上。
(fin)