代碼設計原則

1、DRY原則
DRY是 Don't repeat yourself 的縮寫,意思是"不要重復自己"。
它的涵義是,系統的每一個功能都應該有唯一的實現。也就是說,如果多次遇到同樣的問題,就應該抽象出一個共同的解決方法,不要重復開發同樣的功能。

2、YAGNI原則
YAGNI是 You aren't gonna need it 的縮寫,意思是"你不會需要它"。
這是"極限編程"提倡的原則,指的是你自以為有用的功能,實際上都是用不到的。因此,除了最核心的功能,其他功能一概不要部署,這樣可以大大加快開發。
它背后的指導思想,就是盡可能快、盡可能簡單地讓軟件運行起來(do the simplest thing that could possibly work)

3、ROT原則
ROT是"Rule of three"的縮寫,稱為"三次原則",指的是某個功能出現第三次時才進行"抽象化"。
這樣的好處是:
(1)省事。如果一種功能只有一到兩個地方會用到,就不需要在"抽象化"上面耗費時間了。
(2)容易發現模式。"抽象化"需要找到問題的模式,問題出現的場合越多,就越容易看出模式,從而可以更準確地"抽象化"。

4、SRP
SRP是"Single responsibility principle"的縮寫,又叫單一職責原則。
一個類,只有一個引起它變化的原因。應該只有一個職責。每一個職責都是變化的一個軸線,如果一個類有一個以上的職責,這些職責就耦合在了一起。這會導致脆弱的設計。當一個職責發生變化時,可能會影響其它的職責。另外,多個職責耦合在一起,會影響復用性。例如:要實現邏輯和界面的分離。

5、OCP
OCP的全稱是"Open Close Principle"的縮寫,即開放封閉原則。
開閉原則就是說對擴展開放,對修改關閉。在程序需要進行拓展的時候,不能去修改原有的代碼,實現一個熱插拔的效果。所以一句話概括就是:為了使程序的擴展性好,易于維護和升級。想要達到這樣的效果,我們需要使用接口和抽象類。

6、LSP
里氏代換原則(Liskov Substitution Principle LSP)面向對象設計的基本原則之一。 里氏代換原則中說,任何基類可以出現的地方,子類一定可以出現。
LSP是繼承復用的基石,只有當衍生類可以替換掉基類,軟件單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的行為。
里氏代換原則是對“開-閉”原則的補充。實現“開-閉”原則的關鍵步驟就是抽象化。而基類與子類的繼承關系就是抽象化的具體實現,所以里氏代換原則是對實現抽象化的具體步驟的規范。

7、DIP
所謂依賴倒置原則(Dependence Inversion Principle)就是要依賴于抽象,不要依賴于具體。簡單的說就是要求對抽象進行編程,不要對實現進行編程,這樣就降低了客戶與實現模塊間的耦合。
實現開閉原則的關鍵是抽象化,并且從抽象化導出具體化實現,如果說開閉原則是面向對象設計的目標的話,那么依賴倒轉原則就是面向對象設計的主要手段。

8、ISP
Interface Segregation Principle,即接口隔離原則。
這個原則的意思是:使用多個隔離的接口,比使用單個接口要好。還是一個降低類之間的耦合度的意思,從這兒我們看出,其實設計模式就是一個軟件的設計思想,從大型軟件架構出發,為了升級和維護方便。所以上文中多次出現:降低依賴,降低耦合。

9、CRP
Composite Reuse Principle,合成復用原則。
合成復用原則就是指在一個新的對象里通過關聯關系(包括組合關系和聚合關系)來使用一些已有的對象,使之成為新對象的一部分;新對象通過委派調用已有對象的方法達到復用其已有功能的目的。簡言之:要盡量使用組合/聚合關系,少用繼承。

10、迪米特法則
迪米特法則又叫最少知道原則。
為什么叫最少知道原則,就是說:一個實體應當盡量少的與其他實體之間發生相互作用,使得系統功能模塊相對獨立。也就是說一個軟件實體應當盡可能少的與其他實體發生相互作用。這樣,當一個模塊修改時,就會盡量少的影響其他的模塊,擴展會相對容易,這是對軟件實體之間通信的限制,它要求限制軟件實體之間通信的寬度和深度。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 設計模式之六大原則(轉載) 關于設計模式的六大設計原則的資料網上很多...
    霄霄霄霄閱讀 911評論 0 1
  • 程序設計的6大原則: 單一職責原則里氏替換原則依賴倒置原則接口隔離原則迪米特法則開閉原則 從根本學好,理解為什么要...
    silencefun閱讀 2,428評論 1 4
  • 我們在應用開發中,一般要求盡量做到可維護性和可復用性 應用程序的復用可以提高應用程序的開發效率和質量,節約開發成本...
    Yochi閱讀 535評論 0 0
  • 概述 7 種常用的面向對象設計原則 1、單一職責原則 單一職責原則(Single Responsibility P...
    呆呆滴木木菇涼閱讀 385評論 0 0
  • 女朋友最近辦了一個健身卡還請了私教,每天晚上都要用兩個小時來完成課程,對此我特別不同意她的這種做法,甚至因為此事爭...
    Python與知識圖譜閱讀 469評論 0 0