(一)如何衡量軟體設計的質量
內聚度:
表示乙個應用程式的單個單元所負責的任務數量和多樣性。內聚與單個類或者單個方法單元相關。(好的軟體設計應該做到高內聚。)
耦合度:
耦合度表示類之間關係的緊密程度。低耦合是指盡量使用抽象耦合,少用具體耦合。
設計原則名稱設計原則簡介重要性
單一職責原則
的職責要單一,不能將太多的職責放在乙個類中。
★★★★☆
開閉原則
軟體實體對擴充套件是開放的,但對修改是關閉的,即在不修改乙個軟體實體的基礎上去擴充套件其功能。
★★★★★
歷史替換原則
在軟體系統中,乙個可以接受基類物件的地方必然可以接受乙個子類物件。
★★★★☆
依賴倒轉原則
要針對抽象層程式設計,而不要針對具體類程式設計。
★★★★★
介面隔離原則
用多個專門的介面來取代乙個統一的介面。
★★☆☆☆
組合/聚合復用原則
在系統中應該盡量多使用組合和聚合關聯關係,盡量少使用甚至不使用繼承關係。
★★★★☆
迪公尺特法則
乙個軟體實體對其他實體的引用越少越好,或者說如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用,而是通過引入乙個第三者發生間接互動。
★★★☆☆
一)單一職責(single responsibility principle,srp):
乙個類而言,應該僅有乙個引起它變化的原因,永遠不要讓乙個類存在多個改變的理由。乙個類只應該做和乙個任務相關的業務,不應該把過多的業務放在乙個類中完成。
二)開閉原則(open-close principle,簡稱ocp):
是指乙個軟體實體(類、模組、方法等)應該對擴充套件開放,對修改關閉。開閉原則是設計原則的核心原則。
三)黎克特制替換原則(the liskov substitution principle,lsp):
子類應該能夠完全替換任何父類能夠出現的地方,並且經過替換後,不會讓呼叫父類的客戶程式從行為上有任何改變。
四)依賴倒轉原則 ((dependency inversion principle,簡稱dip)):
高層模組不應該依賴於低層模組,二者都應該依賴於抽象;
抽象不應該依賴於細節,細節應該依賴於抽象。
也就是面向抽象程式設計,不要面向具體程式設計
五)組合/聚合復用原則(composite/aggregation reuse principle,carp):
是指要盡量使用組合/聚合實現**復用,少用繼承來達到復用目的。
六)介面隔離原則 (inte***ce segregation principle,簡稱isp):
是指客戶不應該依賴它們用不到的方法,只給每個客戶它所需要的介面。換句話說,就是不能強迫使用者去依賴那些他們不使用的介面。也就是使用專門的介面,比用乙個統一的介面好
七)迪公尺特法則 (law of demeter,簡稱lod):
乙個軟體實體應當盡可能少的與其他實體發生相互作用。 (不要與陌生人說話!)
第二章 物件導向
1 資料型別 簡單資料型別 byte short int long float double char bool 組合資料型別 struct enum class 值型別 內部資料變化不改變外部資料 struct int float 引用型別 內部資料變化改變外部資料 陣列 指標 class 2 變...
物件導向軟體工程 第二章
首先,實際軟體開發中有很多變數,開發者會犯錯,環境也會改變,客戶也可能犯錯,因此就有各種各樣的模型用以減小變數帶來的損失。1.首先是進化樹模型,它等價與增量 迭代模型,可以理解為最終結果是由不斷新增元件所組成的 增量 而每次新增元件的過程中需要不斷優化,更新元件 迭代 每個增量與迭代都擁有屬於自己的...
物件導向設計原則二
單一職責原則 srp 乙個類應當只有乙個改變的原因,類只需要知道一件事情,它們應當有乙個單獨的職責,要點就是當乙個類需要改變時,應當只有乙個原因。開放 封閉原則 ocp 軟體實體 類 模組 函式等 應當為擴充套件而開放,又為修改而封閉。這個原則有乙個相當詳細的定義,但是乙個簡單的意思是 你應當能夠改...