Durch die zyklomatische Komplexität können Sie feststellen, ob Ihr Code überarbeitet werden muss. Der Code wird analysiert und eine Komplexitätszahl bestimmt. Die Komplexität wird durch Verzweigung (if-Anweisungen usw.) bestimmt. Die Komplexität kann auch die Verschachtelung von Schleifen usw. und andere Faktoren berücksichtigen, je nach dem verwendeten Algorithmus.
Die Nummer ist auf der Methodenebene nützlich. Auf höheren Ebenen ist es nur eine Zahl.
Eine Zahl von 17.754 gibt die Komplexität auf Projektebene (Gesamtcode) an, die nicht so viel Bedeutung hat.
Durch das Heruntersuchen der Komplexität auf Klassen- und Methodenebene werden Bereiche des Codes bestimmt, die in kleinere Methoden umgestaltet oder neu gestaltet werden müssen, um die Komplexität zu verringern.
Betrachten Sie eine CASE
Aussage mit 50 Fällen in einer Methode. Vielleicht hat jeder Staat eine andere Geschäftslogik. Das ergibt eine zyklomatische Komplexität von 50. Es gibt 50 Entscheidungspunkte. Die CASE-Anweisung muss möglicherweise mithilfe eines Factory-Musters neu entworfen werden, um die Verzweigungslogik zu entfernen. Manchmal können Sie eine Umgestaltung vornehmen (die Methode in kleinere Teile aufteilen), und in einigen Fällen wird die Komplexität nur durch eine Neugestaltung verringert.
Im Allgemeinen gilt für die Komplexität auf Methodenebene Folgendes:
- <10 Pflegeleicht
- 11-20 Schwieriger zu pflegen
- 21+ Kandidaten für Refactoring / Redesign
Bedenken Sie auch, dass höhere Komplexitäten den Komponententest erschweren.
Die höchste Komplexität, die ich bei einer einzelnen Methode gesehen habe, war 560. Es waren ungefähr 2000 Zeilen if-Anweisungen in einer Methode. Grundsätzlich nicht zu warten, nicht zu testen, voller potenzieller Fehler. Stellen Sie sich alle für diese Verzweigungslogik erforderlichen Komponententestfälle vor! Nicht gut.
Versuchen Sie, alle Methoden unter 20 zu halten, und stellen Sie fest, dass die Umgestaltung einer Methode mit Kosten verbunden ist, um sie weniger komplex zu machen.