Suche nach Klarstellungen zur Strukturierung von Code, um die zyklomatische Komplexität zu reduzieren

Seit kurzem misst unser Unternehmen wöchentlich die zyklomatische Komplexität (CC) der Funktionen in unserem Code und meldet, welche Funktionen verbessert oder verschlechtert wurden. Deshalb haben wir begonnen, dem CC der Funktionen viel mehr Aufmerksamkeit zu schenken.

Ich habe gelesen, dass CC informell berechnet werden kann als 1 + die Anzahl der Entscheidungspunkte in einer Funktion (z. B. if-Anweisung, for-Schleife, select usw.) oder auch die Anzahl der Pfade durch eine Funktion ...

Ich verstehe, dass der einfachste Weg, CC zu reduzieren, darin besteht, die Refactoring-Methode "Extrahieren" wiederholt zu verwenden ...

Es gibt Dinge, bei denen ich mir nicht sicher bin, z. Was ist der CC der folgenden Codefragmente?

1)

for (int i = 0; i < 3; i++)
    Console.WriteLine("Hello");

Und

Console.WriteLine("Hello");
Console.WriteLine("Hello");
Console.WriteLine("Hello");

Beide machen dasselbe, aber hat die erste Version wegen der for-Anweisung einen höheren CC?

2)

if (condition1)
    if (condition2)
        if (condition 3)
            Console.WriteLine("wibble");

Und

if (condition1 && condition2 && condition3)
    Console.WriteLine("wibble");

Unter der Annahme, dass die Sprache eine Kurzschlussauswertung wie C # durchführt, haben diese beiden Codefragmente den gleichen Effekt ... aber ist der CC des ersten Fragments höher, weil es 3 Entscheidungspunkte / if-Anweisungen hat?

3)

if (condition1)
{
    Console.WriteLine("one");

    if (condition2)
        Console.WriteLine("one and two");
}

Und

if (condition3)
    Console.WriteLine("fizz");

if (condition4)
    Console.WriteLine("buzz");

Diese beiden Codefragmente haben unterschiedliche Funktionen, haben jedoch den gleichen CC? Oder hat die verschachtelte if-Anweisung im ersten Fragment einen höheren CC? geschachtelt, wenn Aussagen mental komplexer zu verstehen sind, aber spiegelt sich dies im CC wider?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage