共用方式為


程式碼計量 - 繼承深度 (DIT)

在本文中,您將了解專為物件導向分析設計的其中一個計量:繼承深度。 繼承深度也稱為繼承樹狀結構的深度 (DIT),定義為「從樹狀結構的節點到根目錄的最大長度」CK。 您可以透過簡單範例來查看此計量。 建立新的類別庫專案,並在撰寫任何程式碼之前,選擇 [分析] > [計算方案的程式碼計量] 來計算程式碼計量。

繼承深度範例 1

由於所有類別繼承自 System.Object,因此深度目前為 1。 如果您繼承自這個類別並檢查新類別,您可以看到結果:

繼承深度範例 2

請注意,樹狀結構中的節點越低 (在此案例中為 Class2),繼承的深度越高。 您可以繼續建立子系並且讓深度盡可能增加。

假設

繼承深度是基於三個基本假設 CK

  1. 階層中的類別越深,其可能會繼承的方法數目愈大,因此更難以預測其行為。

  2. 較深的樹狀結構涉及比較高的設計複雜度,因為涉及更多的類別和方法。

  3. 樹狀結構中較深的類別有更大的潛力重複使用繼承的方法。

假設 1 和 2 告訴您,較大的深度數值並不理想。 如果就這樣結束,那麼您會保持良好的狀態。然而,假設 3 表示較大的深度數值有利於重複使用程式碼的可能性。

分析

以下是您閱讀深度計量的方式:

  • 較小的深度數值

    較小的深度數值意味著複雜度較低,而且透過繼承重複使用程式碼的可能性也比較小。

  • 較大的深度數值

    較大的深度數值意味著透過繼承重複使用程式碼的可能性比較大,而且複雜度比較高,程式碼的錯誤機率也比較高。

程式碼分析

程式碼分析包含可維護性規則的類別。 如需詳細資訊,請參閱可維護性規則。 使用舊版程式碼分析時,延伸設計指導方針規則集包含可維護性區域:

繼承深度設計指導方針規則集

維護性區域內是繼承的規則:

繼承深度可維護性規則

當繼承深度達到 6 或更高時,此規則會發出警告,所以協助防止過度繼承是個好規則。 若要深入了解規則,請參閱 CA1501

整體回顧

DIT 的值較大表示錯誤的可能性也較高,較小的值可降低錯誤的可能性。 DIT 的值較大表示透過繼承重複使用程式碼的可能性比較大,較小的值表示透過繼承重複使用程式碼的可能性較小。 由於資料不足,所以目前沒有 DIT 值的接受標準。 即使是最近進行的研究也找不到足夠的資料來判斷可做為此計量標準數字的可行數字 Shatnawi。 雖然沒有經驗證據支持這點,但有數個資源暗示約為 5 或 6 的 DIT 應該是上限。 如需範例,請參閱 https://www.devx.com/architecture-zone/45611/

引用

CK

Chidamber, S. R. 和 Kemerer, C. F. (1994 年)。 A Metrics Suite for Object Oriented Design (IEEE Transactions on Software Engineering, Vol. 20, No. 6). Retrieved May 14, 2011, from the University of Pittsburgh web site: http://www.pitt.edu/~ckemerer/CK%20research%20papers/MetricForOOD_ChidamberKemerer94.pdf

Krishnan

Subramanyam, R. 和 Krishnan, M. S. (2003 年)。 Empirical Analysis of CK Metrics for Object-Oriented Design Complexity: Implications for Software Defects (IEEE Transactions on Software Engineering, Vol. 29, No. 4). Retrieved May 14, 2011, originally obtained from University of Massachusetts Dartmouth web site https://ieeexplore.ieee.org/abstract/document/1191795

Shatnawi

Shatnawi, R.(2010). A Quantitative Investigation of the Acceptable Risk Levels of Object-Oriented Metrics in Open-Source Systems (IEEE Transactions on Software Engineering, Vol. 36, No. 2).