42 Stimmen

Berechnung von Code-Metriken in Visual Studio

Welches ist der bevorzugte Punktzahlbereich für die Berechnung der Code-Metriken für Folgendes

  • Wartungsfreundlichkeits-Index
  • Zyklomatische Komplexität
  • Tiefe der Vererbung
  • Klasse Coupling

67voto

John Feminella Punkte 292907

Die theoretisch optimalen Werte sind:

  • Index der Wartbarkeit: 100. Höhere Werte bedeuten bessere Wartbarkeit.
  • Zyklomatische Komplexität: 1. die Anzahl der verschiedenen Wege, die ein Code nehmen kann.
  • Vererbungstiefe: 1. die Anzahl der Klassendefinitionen, die im Vererbungsbaum über dieser Klasse liegen, ohne Berücksichtigung der Schnittstellen.
  • Klassenkopplung: 0. Anzahl der anderen Entitäten, von denen diese Entität abhängig ist.

Es gibt keine festen, "guten" Bereiche, aber es ist möglich, einige allgemeine Aussagen zu treffen.

  • Eine hohe zyklomatische Komplexität pro Methode deutet darauf hin, dass eine Methode zu kompliziert wird.
  • Eine Vererbungstiefe von mehr als 3 oder 4 (Ihrer eigenen Klassen, nicht der des Frameworks) ist ein schlechtes Zeichen dafür, dass Sie unnötigerweise abstrakte Beziehungen darstellen, die nicht wirklich im Bereich Ihrer Software liegen.
  • Niedrigklassige Kopplung ist im Allgemeinen besser, aber manchmal ist sie unvermeidbar. Soweit möglich, sollten Sie die Abhängigkeit zwischen Namespaces auf jeden Fall minimieren, da es hier viel weniger Grund für Abhängigkeiten gibt.

Ein Projekt könnte nur dann alle vier Werte gleichzeitig erreichen, wenn es im Wesentlichen nichts tut und nutzlos ist: Software, die nichts tut und von nichts abhängt, ist sicherlich wartbar, aber keine sehr gute Verwendung von Kundengeldern.

Daher ist jede Komplexität ein Kompromiss: zusätzliche sogenannte inhärent Komplexität kodiert mehr Raffinesse in das Programm, so dass es den Funktionsumfang erweitern kann. Was Sie vermeiden möchten, ist zufällig Komplexität, die durch eine schlechte oder mangelhafte Umsetzung entsteht.

1voto

user3511585 Punkte 33

Bevor Sie sich zu sehr darauf verlassen (oder überhaupt darauf vertrauen), sollten Sie sich die folgende Seite ansehen, auf der detaillierter beschrieben wird, wie die Metrik berechnet wird:

https://avandeursen.com/2014/08/29/think-twice-before-using-the-maintainability-index/

Der Maintainability Index von VS ist eine schlecht validierte Kombination von Metriken, die sich auf eine Metrik (zyklomatische Komplexität) stützt, die nachweislich nicht mit der Verständlichkeit von Code korreliert (und daher auch nicht mit der Wartbarkeit). Siehe "Automatically Assessing Code Understandability: How Far Are We?", von Scalabrino et al. und https://shape-of-code.com/?s=cyclomatic+Komplexität

Darüber hinaus wurden die Konstanten und Funktionen, die in dieser Metrik verwendet werden, nicht an C#- oder VB-Code kalibriert, was sie noch unbrauchbarer macht.

(Damit wird auf die ursprüngliche Frage eingegangen, indem darauf hingewiesen wird, dass die ursprüngliche Frage gar nicht gestellt werden sollte).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X