好文共享 - SOLID Principles: Improve Object-Oriented Design in Python
覺得我們的內容實用嗎? MyApollo 電子報讀者募集中!歡迎訂閱電子報!
文章& Python 範例: https://realpython.com/solid-principles-python/
SOLID 原則很重要的心法,可以讓你寫出更有組織、更好維護的程式。 SOLID 是由 5 個原則的首字組成的,分別是:
- Single-Responsibility Principle (SRP)
- Open-Closed Principle (OCP)
- Liskov Substitution Principle (LSP)
- Interface Segregation Principle (ISP)
- Dependency Inversion Principle (DIP)
簡單來說:
- 每個函式都應該盡量只負責單一職責,避免包山包海導致程式邏輯太多,不僅不好閱讀,也不好維護
- 程式設計的可擴充性並非透過修改的方式達成,例如要新增一種交通工具的話,較好的做法應該是透過繼承類別 Vehicle 的方式進行,而非修改 Vehicle 原本的 code 進行擴充
- 繼承相同類別的 subtype 都要能夠輕鬆相互替換,而不造成系統問題,例如所有的金流都繼承自相同類別,擁有共通的方法,因此這些金流服務可以隨使用者偏好進行切換/抽換都不會影響系統功能,程式碼也不會有過多的重複
- 介面(interface)的制定應該依賴核心功能即可,需要時透過 composition 進行多重繼承,組合出你要的類別,例如一個 class 應該繼承 Fax 與 Printer 2 種類別以表示該類別有 Fax 與 Printer 2 種功能,而非在 Printer 類別中添加 Fax 功能,因為 Fax 並不是 Printer 的核心依賴功能
- 依賴反轉原則,透過抽象化介面,讓物件之間透過議定好的介面進行溝通,變成依賴的是介面,而非物件的程式細節