Freigeben über


Codemetriken – Tiefe der Vererbung (DIT)

In diesem Artikel erfahren Sie mehr über eine der Metriken, die speziell für die objektorientierte Analyse entwickelt wurden: Tiefe der Vererbung. Die Tiefe der Vererbung, auch als Tiefe des Vererbungsbaums (DIT) bezeichnet, wird als "die maximale Länge vom Knoten bis zur Wurzel des Baums" definiert. Sie können dies mit einem einfachen Beispiel sehen. Erstellen Sie ein neues Klassenbibliotheksprojekt, und berechnen Sie vor dem Schreiben von Code die Codemetriken, indem Sie Analysieren > Code-Metriken für Lösung berechnen auswählen.

Tiefe der Vererbung ( Beispiel 1)

Da alle Klassen von System.Object erben, beträgt die Tiefe derzeit 1. Wenn Sie von dieser Klasse erben und die neue Klasse untersuchen, können Sie das Ergebnis sehen:

Tiefe des Vererbungsbeispiels 2

Beachten Sie, dass der Knoten niedriger im Baum ist (Class2 in diesem Fall), desto größer ist die Vererbungstiefe. Sie können weiterhin Kinder erstellen und dazu führen, dass die Tiefe so viel wie gewünscht erhöht wird.

Annahmen

Die Tiefe der Vererbung wird auf drei grundlegende Annahmen CK prädiziert:

  1. Je tiefer eine Klasse in der Hierarchie ist, desto größer ist die Anzahl der Methoden, die sie wahrscheinlich erben wird, was es schwieriger macht, sein Verhalten vorherzusagen.

  2. Tiefere Bäume erfordern eine größere Designkomplexität, da mehr Klassen und Methoden beteiligt sind.

  3. Tiefere Klassen in der Struktur haben ein größeres Potenzial, geerbte Methoden wiederzuverwenden.

Annahmen 1 und 2 sagen Ihnen, dass eine höhere Zahl für die Tiefe schlecht ist. Wenn das hier endet, wären Sie in guter Form; Die Annahme 3 weist jedoch darauf hin, dass eine höhere Zahl für die Tiefe gut für die potenzielle Wiederverwendung von Code geeignet ist.

Analyse

Hier erfahren Sie, wie Sie die Tiefenmetrik lesen:

  • Niedrige Zahl für Tiefe

    Eine niedrige Zahl für die Tiefe bedeutet weniger Komplexität, aber auch die Möglichkeit, weniger Code durch Vererbung wiederzuverwenden.

  • Hohe Zahl für Tiefe

    Eine hohe Tiefe bedeutet mehr Potenzial für die Wiederverwendung von Code durch Vererbung, aber auch eine höhere Komplexität mit einer höheren Wahrscheinlichkeit von Fehlern im Code.

Codeanalyse

Die Codeanalyse enthält eine Kategorie von Maintainability-Regeln. Weitere Informationen finden Sie unter Wartbarkeitsregeln. Bei der Verwendung der Legacy-Code-Analyse enthält der Regelsatz "Erweiterte Entwurfsrichtlinie" einen Bereich für die Wartbarkeit.

Tiefe der Regelsätze für Vererbungsdesignrichtlinien

Innerhalb des Bereichs der Wartbarkeit gibt es eine Regel für die Vererbung.

Tiefe der Vererbungs-Wartbarkeitsregel

Diese Regel gibt eine Warnung aus, wenn die Tiefe der Vererbung 6 oder höher erreicht, daher ist es eine gute Regel, um übermäßige Vererbung zu verhindern. Weitere Informationen zur Regel finden Sie unter CA1501.

Alles zusammensetzen

Hohe Werte für DIT bedeuten auch, dass das Fehlerpotenzial hoch ist, niedrige Werte verringern das Potenzial für Fehler. Hohe Werte für DIT deuten auf ein größeres Potenzial für die Wiederverwendung von Code durch Vererbung hin, während niedrige Werte darauf hindeuten, dass weniger Code über Vererbung wiederverwendet wird. Aufgrund fehlender ausreichender Daten gibt es derzeit keinen akzeptierten Standard für DIT-Werte. Selbst kürzlich durchgeführte Studien fanden keine ausreichenden Daten, um eine lebensfähige Zahl zu ermitteln, die als Standardnummer für diese Metrik Shatnawi verwendet werden konnte. Obwohl es keine empirischen Beweise gibt, um sie zu unterstützen, schlagen mehrere Ressourcen vor, dass ein DIT um 5 oder 6 eine Obergrenze sein sollte. Ein Beispiel finden Sie unter https://www.devx.com/architecture-zone/45611/.

Zitate

CK

Chidamber, S. R. & Kemerer, C. F. (1994). A Metrics Suite for Object Oriented Design (IEEE Transactions on Software Engineering, Vol. 20, Nr. 6). Abgerufen am 14. Mai 2011 von der Website der University of Pennsylvania: http://www.pitt.edu/~ckemerer/CK%20research%20papers/MetricForOOD_ChidamberKemerer94.pdf

Krishnan

Subramanyam, R. & Krishnan, M. S. (2003). Empirische Analyse von CK-Metriken für objektorientierte Designkomplexität: Auswirkungen auf Softwarefehler (IEEE Transactions on Software Engineering, Vol. 29, Nr. 4). Abgerufen am 14. Mai 2011, ursprünglich von der University of Massachusetts Dartmouth abgerufen https://ieeexplore.ieee.org/abstract/document/1191795

Shatnawi

Shatnawi, R. (2010). Eine quantitative Untersuchung der zulässigen Risikostufen von objektorientierten Metriken in Open-Source-Systemen (IEEE Transactions on Software Engineering, Vol. 36, Nr. 2).