# Clean Code ch4 part2 ### 抽象原則 > 每一個抽象背後都是**隱藏複雜性**的簡化槓桿。(抽象塔) #### 編寫程式的抽象規則: > 實作應(複雜)與介面(簡化)分開 :::info 在**最大程度的簡化**和**最大程度的發揮作用**中取得一種平衡,即抽象原則追求的目標。 ::: ##### 抽象化不足 🍓 - **不要重複自己**(Don't Repeat yourself,**DRY**) ##### 過度抽象化 🥝 - **你將不需要它**(You aren't gonna need it,**YAGNI**) - **保持簡單和愚蠢**(Keep it simple, stupid,**KISS**) ### 函數式程式設計原則 🥑 > 使用**函數**和**不可變狀態**來實現目標。 ##### 函數純度 pure function 🍅 > 函式的回傳值僅從輸出值得出,沒有副作用。 - 可預測性 Predictability - 可測試性 Testability ##### 不可變性 🍋 > 資料不應該被改變(eg. const)