在本文中,您將瞭解專為物件導向分析設計的其中一個指標:繼承深度。 繼承深度,也稱為繼承樹深度(DIT),定義為「從節點到樹根的最大長度」 CK。 你可以用一個簡單的例子來看出這一點。 建立新的類別程式庫專案,並在撰寫任何程式碼之前,選擇 [分析 > ] 計算解決方案的程式碼計量來計算程式碼計量。
由於所有類別都繼承自 System.Object,目前深度為 1。 如果您繼承自這個類別並檢查新類別,則可以看到結果:
請注意,樹狀結構中的節點越低(Class2 在本例中),繼承的深度就越高。 你可以繼續創造孩子,並讓深度隨心所欲地增加。
假設
繼承深度基於三個基本假設 CK:
階層中的類別越深,它可能繼承的方法數量就越多,這使得預測其行為變得更加困難。
更深的樹涉及更大的設計複雜度,因為涉及更多的類別和方法。
樹狀結構中較深的類別具有重複使用繼承方法的更大潛力。
假設 1 和 2 告訴您,深度數字越高是不好的。 如果事情就這樣結束了,你的狀態就會很好;不過,假設 3 指出較高的深度數字有利於潛在的程式碼重複使用。
分析
以下是您閱讀深度指標的方法:
深度值偏低
較小的深度數值意味著複雜性較低,但也可能導致透過繼承重用程式碼的機會減少。
深度值高
深度數字越高,表示透過繼承重複使用程式碼的可能性更大,但複雜度也更高,程式碼中出錯的可能性也更高。
Code Analysis
程式代碼分析包含可維護性規則的類別。 如需詳細資訊,請參閱 維護性規則。 使用舊版程式代碼分析時,擴充設計指導方針規則集包含可維護性區域:
可維護性區域內有一個繼承規則:
當繼承深度達到 6 或更大時,此規則會發出警告,因此這是有助於防止過度繼承的好規則。 若要深入瞭解規則,請參閱 CA1501。
整合一切
DIT 的高值表示出錯的可能性也很高,低值則降低出錯的可能性。 DIT 的高值表示透過繼承重用程式碼的潛力更大,而低值則表示透過繼承程式碼的重用潛力較低。 由於缺乏足夠的數據,目前沒有公認的 DIT 值標準。 即使是最近進行的研究也沒有找到足夠的數據來確定可用作該指標 Shatnawi 標準數字的可行數字。 儘管沒有經驗證據支持這一點,但一些資源表明,5 或 6 左右的 DIT 應該是一個上限。 如需範例,請參閱 https://www.devx.com/architecture-zone/45611/。
引文
肌酸激酶
Chidamber, SR 和 Kemerer, CF (1994)。 物件導向設計的指標套件(IEEE 軟體工程彙刊,第 20 卷,第 6 期)。 2011 年 5 月 14 日從匹茲堡大學網站檢索: http://www.pitt.edu/~ckemerer/CK%20research%20papers/MetricForOOD_ChidamberKemerer94.pdf
克里希南
Subramanyam, R. 和 Krishnan, MS (2003)。 CK 指標對 Object-Oriented 設計複雜性的實證分析:對軟體缺陷的影響(IEEE 軟體工程彙刊,第 29 卷,第 4 期)。 檢索日期:2011 年 5 月 14 日,最初來自馬薩諸塞大學達特茅斯分校網站 https://ieeexplore.ieee.org/abstract/document/1191795
沙特納維
沙特納維,R.(2010)。 Open-Source 系統中 Object-Oriented 指標可接受風險等級的定量調查(IEEE 軟體工程彙刊,第 36 卷,第 2 期)。