Gibt es eine zur McCabe-Komplexitätsmessung analoge Metrik, um zu messen, wie kohärent eine Routine ist und wie locker (oder eng) die Routine mit anderem Code in derselben Codebasis gekoppelt ist?
Gibt es eine zur McCabe-Komplexitätsmessung analoge Metrik, um zu messen, wie kohärent eine Routine ist und wie locker (oder eng) die Routine mit anderem Code in derselben Codebasis gekoppelt ist?
Antworten:
Ich denke, die Metrik, nach der Sie suchen, ist LCOM4, obwohl sie eher für Klassen gilt.
Sonar erklärt es hier schön :
... Metrik: LCOM4 (Mangelnde Kohäsionsmethoden) zur Messung der Kohäsionsklassen. Die Interpretation dieser Metrik ist ziemlich einfach, da Wert 1 bedeutet, dass eine Klasse nur eine Verantwortung (gut) hat und Wert X bedeutet, dass eine Klasse wahrscheinlich X Verantwortlichkeiten (schlecht) hat und überarbeitet / aufgeteilt werden sollte.
Hier gibt es keine Magie, nur gesunden Menschenverstand. Nehmen wir ein einfaches Beispiel mit der Klasse Driver. Diese Klasse hat zwei Felder: Auto und Gehirn und fünf Methoden: drive (), goTo (), stop (), getAngry () und drinkCoffee (). Hier ist das Abhängigkeitsdiagramm zwischen diesen Komponenten. Es gibt drei Blöcke verwandter Komponenten, also LCOM4 = 3, sodass die Klasse drei verschiedene Verantwortlichkeiten zu haben scheint und das Prinzip der Einzelverantwortung verletzt.
...
Es ist ein großartiges Werkzeug, wenn Sie es verwenden können. :)
brain.setAngry(driver)
? car.applyBreaks(driver)
?
Instabilität wird in verschiedenen Codemetriktools unterstützt.