1. 程式人生 > >軟體開發時設計時要遵循的原則

軟體開發時設計時要遵循的原則

軟體開發原則
  • 開閉原則(OCP
開閉原則(OCP)是面向物件設計中可複用設計的基石,是面向物件設計中最重要的原則之一,其它很多的設計原則都是實現開閉原則的一種手段。1988年,勃蘭特·梅耶(Bertrand Meyer)在他的著作《面向物件軟體構造(Object Oriented Software Construction)》中提出了開閉原則,它的原文是這樣:“Software entities should be open for extension,but closed for modification”。翻譯過來就是:軟體實體應當對擴充套件開放,對修改關閉。這句話說得略微有點專業,我們把它講得更通俗一點,也就是:軟體系統中包含的各種元件,例如模組(
Modules)、類(Classes)以及功能(Functions)等等,應該在不修改現有程式碼的基礎上,引入新功能。開閉原則中,是指對於元件功能的擴充套件是開放的,是允許對其進行功能擴充套件的;開閉原則中,是指對於原有程式碼的修改是封閉的,即不應該修改原有的程式碼。
  • 里氏代換原則(LSP
里氏代換原則(Liskov Substitution Principle LSP)面向物件設計的基本原則之一。 里氏代換原則中說,任何基類可以出現的地方,子類一定可以出現。 里氏代換原則是對-原則的補充。(多型)
  • 依賴倒轉原則(DIP
所謂依賴倒置原則(Dependence Inversion Principle
)就是要依賴於抽象,不要依賴於具體。簡單的說就是要求面向抽象進行程式設計,不要面向具體進行程式設計,這樣就降低了客戶與實現模組間的耦合。面向過程的開發,上層呼叫下層,上層依賴於下層,當下層劇烈變動時上層也要跟著變動,這就會導致模組的複用性降低而且大大提高了開發的成本。面向物件的開發很好的解決了這個問題,一般情況下抽象的變化概率很小,讓使用者程式依賴於抽象,實現的細節也依賴於抽象。即使實現細節不斷變動,只要抽象不變,客戶程式就不需要變化。這大大降低了客戶程式與實現細節的耦合度。(面向抽象程式設計、面向介面程式設計),父控制子,子不要控制父。依賴倒轉也可以叫做控制反轉。
  • 介面隔離原則(ISP
使用多個專門的介面比使用單一的總介面要好。一個類對另外一個類的依賴性應當是建立在最小的介面上的。一個介面代表一個角色,不應當將不同的角色都交給一個介面。沒有關係的介面合併在一起,形成一個臃腫的大介面,這是對角色和介面的汙染。
不應該強迫客戶依賴於它們不用的方法。介面屬於客戶,不屬於它所在的類層次結構。不要強迫客戶使用它們不用的方法,如果強迫使用者使用它們不使用的方法,那麼這些客戶就會面臨由於這些不使用的方法的改變所帶來的改變。
  • 合成/聚合複用原則
合成/聚合複用原則(Composite/Aggregate Reuse Principle ,CARP)經常又叫做合成複用原則。合成/聚合複用原則就是在一個新的物件裡面使用一些已有的物件,使之成為新物件的一部分;新的物件通過向這些物件的委派達到複用已有功能的目的。它的設計原則是;要儘量使用合成/聚合,儘量不要使用繼承。
  • 迪米特法則(鬆耦合)
迪米特法則(Law of Demeter)又叫作最少知道原則(Least Knowledge Principle 簡寫LKP),就是說一個物件應當對其他物件有儘可能少的瞭解,不和陌生人說話。英文簡寫為: LoD迪米特法則可以簡單說成:talk only to your immediate friends 對於OOD來說一個軟體實體應當儘可能少的與其他實體發生相互作用。每一個軟體單位對其他的單位都只有最少的知識,而且侷限於那些與本單位密切相關的軟體單位。迪米特法則的初衷在於降低類之間的耦合。由於每個類儘量減少對其他類的依賴,因此,很容易使得系統的功能模組功能獨立,相互之間不存在(或很少有)依賴關係