Open hatelove opened 7 years ago
幾點建議:
最後 production code 雖然有透過 extract method 來降低複雜度,但可讀性還是很差的,至少演算法跟命名的部分,都不是這麼清楚,參數、變數的命名,更容易造成誤會
重構地不夠即時,複雜度過高的 GetDiscount 也沒有重構
GetDiscount
第五個綠燈是敗筆,又偷跑,又搞得很複雜,又沒有基於重構完畢的基礎,大量地寫出一堆可讀性低的 production code 演算法。
其餘的請見 commit comments 與 底下的 sample solution
https://github.com/hatelove/PotterShoppingCart/commits/anotherRefactor 我的演算法也寫得不夠好, 但對外的 function 主流程很清楚:
2017 新版 production code 作法 (中間過程因為一些緣故有漏 commit 檔案)
TDD 演進過程主要步驟
你在動手寫任何 code 之前,應該有眼前已知完整的需求,以這為前提,在第一個紅燈時把 API 設計好。既要考慮到眼前已知的所有需求,又不能腦補可能發生也可能不會發生的需求,並以需求的 domain 為主軸,命好名字,考量該怎麼用,API 才具備易用性,呼叫端才是最方便使用的。
感謝指教~~ 看來我得重新RUN一遍第二天的作業~~
幾點建議:
最後 production code 雖然有透過 extract method 來降低複雜度,但可讀性還是很差的,至少演算法跟命名的部分,都不是這麼清楚,參數、變數的命名,更容易造成誤會
重構地不夠即時,複雜度過高的
GetDiscount
也沒有重構第五個綠燈是敗筆,又偷跑,又搞得很複雜,又沒有基於重構完畢的基礎,大量地寫出一堆可讀性低的 production code 演算法。
其餘的請見 commit comments 與 底下的 sample solution
Sample Solution
2016 舊版
https://github.com/hatelove/PotterShoppingCart/commits/anotherRefactor 我的演算法也寫得不夠好, 但對外的 function 主流程很清楚:
2017 版本
2017 新版 production code 作法 (中間過程因為一些緣故有漏 commit 檔案)
TDD 演進過程主要步驟
API設計要點
你在動手寫任何 code 之前,應該有眼前已知完整的需求,以這為前提,在第一個紅燈時把 API 設計好。既要考慮到眼前已知的所有需求,又不能腦補可能發生也可能不會發生的需求,並以需求的 domain 為主軸,命好名字,考量該怎麼用,API 才具備易用性,呼叫端才是最方便使用的。