软件设计应该遵循的基本原则有哪些?
1.1)高內聚、低耦合
一個軟件系統要有一個穩定的架構,不會隨著需要的改變在發生巨大的變動。因此,高內聚、低耦合是一個軟件系統設計中必須遵循的基本原則。
所謂高內聚,是指一個軟件模塊內各個元素彼此結合的緊密程度要高,即一個軟件模塊是由相關性很強的代碼組成,只負責一項任務,也就是常說的單一責任原則。
所謂低耦合,是指一個軟件系統內不同模塊之間的互連程度要低。不同模塊之間的聯系越緊密,其耦合性就越強,模塊的獨立性則越差,模塊間耦合的高低取決于模塊間接口的復雜性、調用的方式及傳遞的信息。
因此,在一個軟件系統中,應當盡量保證模塊的獨立性,模塊實現功能職責單一,越簡單越好。這樣有利于系統復用,并且大大減少模塊之間的依賴,系統穩定性高,更易于維護。
1.2)面向抽象編程
在面向過程的軟件開發中,上層組件調用下層組件,就意味著上層組件依賴于下層組件,當下層組件發生劇烈變化時,上層組件也要跟著一起發生變動,這將導致軟件組件模塊的復用性大大降低,從而增加軟件開發成本,使軟件結構設計上存在一定的臃腫性,不利于后期系統維護工作。
在面向對象的軟件設計中,很好地解決了上述問題,使程序都依賴于抽象,而不是依賴具體實現。因為在一般情況下抽象的變化概率比較小,依賴抽象編程大大降低了客戶應用程序與實現細節的耦合度,提升了軟件結構的健壯性。只要保證抽象不發生變化,客戶程序就不需要改變。這就是依賴倒置原則。
在程序中要盡量使用抽象類型作為對象實例變量類型,這樣就保證了將客戶程序與具體實現之間解耦,因為使用的是抽象類型,因此具體實現的改變不會影響抽象類型的改變。
1.3)多用組合少用繼承
在面向對象的軟件設計中,對于類的擴展,首先想到的是使用類的繼承來實現,由子類來繼承父類,從而完成對子類功能的擴展。繼承的好處是可以盡量讓相同的屬性或者功能復用,但是隨著項目越來越大,需求的不斷變化,繼承就會變得越來越臃腫,后期難以控制和維護。最重要的是,繼承會不分青紅皂白地把父類的公有和受保護的方法統統繼承下來,而這些方法可能是子類不需要的功能,會對子類產生一些危害。
如果使用組合方式,就不會出現上述繼承的問題。所謂對象組合,是指在一個對象中含有另外一個對象的引用,從而可以使用該內部對象的引用作出一些處理行為。使用組合方式的好處有以下幾點:首先,不會對類產生有害的影響;其次,組合方式要比繼承方式靈活,因為是由系統運行動態地決定使用對象與否;最后,不會造成因繼承而引起的類膨脹,減少了對父類的依賴性。
1.4)“開-閉”原則
“開-閉”原則,即“對擴展開放,對修改關閉”,指的是在軟件設計中,當對某一軟件實體進行擴展時,盡量不要去修改原有的軟件實體,換句話說就是在不修改原有軟件實體的情況下對其進行擴展。這種軟件設計方式其實是一種目標,它考慮了軟件后期的維護等其他因素。一個軟件系統如果可以達到這個目標,那它就是可擴展、易維護的。
在軟件設計領域中,眾多設計模式的應用就是為了達到這個目標?!伴_-閉”原則是一種很抽象的設計原則,更像是一種倡導的口號,其他設計原則都是為了實現“開-閉”原則的具體原則。“開-閉”原則與其他設計原則就好比抽象父類與子類的關系一樣。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的软件设计应该遵循的基本原则有哪些?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++的三大特性:封装,继承,多态
- 下一篇: com组件的了解