What is SOLID?
在程序設計領域, SOLID(單一功能、開閉原則、里氏替換、接口隔離以及依賴反轉)是由羅伯特·C·馬丁在21世紀早期引入的記憶術首字母縮略字,指代了物件導向編程和物件導向設計的五個基本原則。當這些原則被一起應用時,它們使得一個程式設計師開發一個容易進行軟體維護和擴展的系統變得更加可能。[1] SOLID所包含的原則是通過引發編程者進行軟體原始碼的代碼重構進行軟體的代碼異味清掃,從而使得軟體清晰可讀以及可擴展時可以應用的指南。SOLID被典型的應用在測試驅動開發上,並且是敏捷開發以及自適應軟體開發的基本原則的重要組成部分。
● Single-responsiblity principle
一個class內應該只有一個改變的理由,意思是一個class應該只需要專注做一件事情,這個理由是當class內需要做兩件以上的工作時,一旦程式需要改變,因為他的耦合度比一件工作還要高,造成變更上的困難,所以盡量避免。
● Open-closed principle
當你新增功能的時候,需能在不更改原本程式碼的情況下進行擴增,如此一來,可以增加維護性,降低原有的功能發生錯誤的機率,重用性的機率也會隨之提高。
● Liskov substitution principle
若是使用繼承,子類別實作的行為必須要與父類別或是介面所定義的行為一致,並且子類別要能夠完全取代掉父類別,若子類別沒有遵守LSP的情況下,使用者呼叫某個功能時可能會出現與預期的功能不相符合的問題。
● Interface segregation principle
在設計介面時,不應該放入不相關的method,例如在一個叫animal的abstract class內含有run()和fly()的method,由狗和鳥繼承,但是狗會跑卻不會飛,這樣fly()的method卻能被狗使用不就很奇怪嗎? 所以這個原則主要用途是在降低耦合度,減少不當的設計。
● Dependency Inversion Principle
高階模組不要依賴低階模組,兩者都必須要依賴抽象模組;抽象不能依賴細節,細節必須依賴抽象,簡單來說,假設我有多個廠牌亮度不相同的燈泡,但是只要符合燈座的規格,都可以安裝上去,以這個範例來說,燈座的規格就是抽象模組。
資料參考 : wiki
留言列表