# 我們應該測試什麼 ## 寫有意義的測試 ## 測試驅動設計/設計驅動測試 ### 測試驅動設計: - 寫最簡單的代碼只為了通過測試 - 不去想很多設計,而是從結果開始 - 由顧客的角度去思考 - 顧客不需要結構 - 步驟 - 看需求 - 設想軟體要處理的問題 - 寫出測試列表 - 使用測試列表來引導開發 ### 設計驅動測試: - 寫出 class/function 表 - 並為每個功能寫測試 ![](https://i.imgur.com/TAeco4P.png) ## 重複的代碼和 Rule of Three - Rule of Three - 重複同樣代碼至少(平均)三遍再進行重構 - 為什麼要至少重複三遍 - 過早進行重構,有可能讓代碼不夠抽象化 - 三遍:不用太早也不用太晚 - 太早:可能會讓代碼抽象化失敗 - 太晚:重構工作量太重 - 減少重複的代碼 -> 讓重構代碼變得簡單 - 但在 TDD 過程中會讓重複的代碼變得越來越多 - (不用設計) - 但要額外花時間去重構 - 但也不要一昧地減少重複 - 減少代碼可讀性 - 讓單一測試變得太臃腫 ###### tags: `TDD` `Note`