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

保持簡單,避免不必要的複雜性。

核心概念:

  • 簡單的解決方案優於複雜的方案
  • 避免過度設計
  • 可讀性優先