0

article über zyklomatische Komplexität McCabes gelesen hat, heißt es:Was sind Case-Label-Anweisungen und Case-Labels?

Ein weniger häufig auftretendes Problem, die größeren Auswirkungen auf Komplexität hat, ist die Unterscheidung zwischen „Fall-markierten Aussagen“ und Wenn mehrere „Fall Etikett.“ Fallbezeichnungen gelten für das gleiche Programm Anweisung, dies ist als eine einzige Entscheidung Ergebniskante in der Kontrollflussdiagramm modelliert, Hinzufügen von eins zur Komplexität.

Ich verstehe nicht - was ist eine "Case Labeled Statement" und "Case Label"?

Bedeutet dies, wenn case 1, case 2, z.B. beide springen zu case 3?

Antwort

1

Ja, McCabe weist auf den Unterschied in der Komplexität zwischen einem Fall, der eine Anweisung direkt beschriftet, und einem Fall, dass durch in einen anderen Fall fällt.

Jede "case-labeled statement" fügt der zyklomatischen Komplexität hinzu, daher fügt das folgende Beispiel +3 hinzu.

switch (arg) { 
    case "foo" : System.out.println("foo"); 
    case "bar" : System.out.println("bar"); 
    case "baz" : System.out.println("baz"); 
} 

A „-Fall-Label“, die auf einem anderen Fall durch fallen fügt keine zu zyklomatischen Komplexität, so dass das folgende Beispiel +1 addiert.

switch (arg) { 
    case "foo" : 
    case "bar" : 
    case "baz" : System.out.println("foo | bar | baz"); 
}