SOLID

出自維基百科,自由嘅百科全書

SOLID軟件工程上嘅五條原則,個名取自嗰五條原則嘅開頭字母。SOLID 由美國軟件工程師羅拔·C·馬田(Robert C. Martin)喺 2000 年提出,旨在令電腦程式嘅設計(以至軟件工程)變得更加:

  • 有彈性-通常一個程式喺搞掂之後,設計者仲會想做啲擴充或者加修補程式
  • 強韌-有時一個程式可能有彈性易改,但一改就勁出錯,「強韌」意思就係打後嘅修改唔會令個程式出一大柞錯。
  • 流動-即係呢個程式搞掂咗之後,設計者有得攞佢某啲部份返用,例如有個子程序,要依賴好多原本嗰個程式嘅其他部份先行到,呢個子程式會難返用。
  • 無粘性-即係喺打後改個程式嗰陣,依然可以保留到原先嗰個設計[1][2]

以上呢啲問題傾向係(直接間接)因為依賴性(dependency)而起嘅:想像一個程式 A,有個子程序 S,如果 S 一定要 A 嘅某啲部份先行得到(有依賴性),噉個設計師想改個程式嗰陣就比較會有難度(一改咗某個部份,就搞到 S 行唔到或者行起上嚟出錯),而且想攞 S 去第個程式嗰度用嗰陣又撈絞(第啲程式未必有 S 依賴嘅部份),所以 SOLID 嗰五條原則主要集中於控制一個程式嘅依賴性問題[2]:p. 4

五大原則內容[編輯]

  • S單一功能原則Single responsibility principle):每個物件都應該得一個單一嘅功能;一個物件多功能嘅話,佢就會有需要成日修改,出錯嘅機會就增加[3]
  • O開閉原則Open Closed Principle):一個子程式應該要容易擴張,但唔易修改;幫一個子程式加料嗰陣,佢嘅基本功能要不變[4]
  • L里氏替換原則Liskov Substitution principle):一個程式入面嘅物件應該要容易用同一子類嘅嘢替換,而個程式嘅正確性不變[5]
  • I介面隔離原則Interface-segregation principles):多個特定客戶端介面好過一個寬泛用途嘅介面;一個子程序多嘢要改嗰陣就麻煩[6]
  • D依賴反轉原則Dependency inversion principle):一個子程式應該依賴於抽象而唔係實例[7]

睇埋[編輯]

參考[編輯]

[編輯]

  1. Robert C. Martin. "Principles Of OOD". butunclebob.com.
  2. 2.0 2.1 Robert C. Martin (2000). "Design Principles and Design Patterns" (PDF). objectmentor.com.
  3. "Single Responsibility Principle" (PDF). objectmentor.com.
  4. "Open/Closed Principle" (PDF). objectmentor.com.
  5. "Liskov Substitution Principle" (PDF). objectmentor.com.
  6. "Interface Segregation Principle" (PDF). objectmentor.com.
  7. "Dependency Inversion Principle" (PDF). objectmentor.com.