Clean Code
軟體設計原則,幫助撰寫可維護、可擴展的程式碼。
SOLID 原則
Single Responsibility Principle (單一職責)
一個類別應該只有一個單一的責任或原因被修改。
核心概念:
- 每個類別只負責一件事
- 專注於單一功能
- 避免在單一類別中實作多個功能
範例: 若一個類別負責處理用戶數據,它不應該同時處理資料庫連線。
Open/Closed Principle (開放封閉)
軟體實體應該對擴展開放,對修改封閉。
核心概念:
- 通過擴展來實現新功能,而非修改既有程式碼
- 使用 interface/abstract/extends 擴展功能
- 設計新類別繼承或實作已有程式碼
Liskov Substitution Principle (里氏替換)
子類別應該可以替換其父類別,而不會影響程式的正確性。
核心概念:
- 子類別不應改變父類別的行為
- 替換後系統行為應保持一致
- 確保繼承關係的正確性
Interface Segregation Principle (介面隔離)
類別不應該被強迫實現不會用到的接口方法。
核心概念:
- 將大接口拆分成更小、更專門的接口
- 類別只需實現真正需要的接口
- 避免臃腫的接口設計
Dependency Inversion Principle (依賴反轉)
高層模組不應該依賴於低層模組,二者都應該依賴於抽象。
核心概念:
- 依賴抽象而非具體實作
- 減少系統耦合度
- 增加靈活性和可維護性
F.I.R.S.T 測試原則
撰寫良好單元測試的五個原則:
| 原則 | 說明 |
|---|---|
| Fast (快速) | 測試應該快速執行 |
| Independent (獨立) | 測試之間不應該互相依賴 |
| Repeatable (可重複) | 測試應該可以在任何環境重複執行 |
| Self-Validating (自我驗證) | 測試報告應清楚顯示成功或失敗 |
| Timely (及時) | 在寫 Production Code 前先寫測試 (TDD) |
KISS 原則
Keep It Simple, Stupid
保持簡單,避免不必要的複雜性。
核心概念:
- 簡單的解決方案優於複雜的方案
- 避免過度設計
- 可讀性優先