2017-04-07 6 views
1

Sonar Lint-Regel "Methoden sollten nicht zu komplex sein" (squid: MethodCyclomaticComplexity) hat ein Beispiel für die Verwendung mehrerer Return-Anweisung im Programmblock. (siehe https://groups.google.com/forum/#!topic/sonarqube/BtvGoF6Tw7E für die Regeln zur Berechnung zyklischer Komplexität)Ist es eine schlechte Praxis, mehrere Rückgaben zu haben?

Die Rückgabe verkürzt die Codes in einem Zweig und führt zu kleineren Codeblöcken. Beispiel:

 

    int findBranchNumber(String input) { 
     if ("branch1".equals(input)) { 
      return 1; 
     } 
     if ("branch2".equals(input)) { 
      return 2; 
     } 
     // .... 
     return -1; 
    } 

Die Alternative verwendet eine Methodenvariable (in diesem Fall) oder größere Blöcke. Wer den Code liest, muss die gesamte Methode lesen, bevor er feststellt, dass nur die ersten 3 Zeilen relevant für "Branch1" sind.

Bitte raten ...

+0

Wie viele 'if' Aussagen haben Sie? Man könnte argumentieren, dass die Verwendung einer "Map " hier eine Verbesserung darstellt. –

+0

Sie haben Recht. Eine Lookup Map ist ein besserer Ansatz für die Übersetzungsarbeit. – user2995767

Antwort

0

ich persönlich tun, wie Sie in Beispiel zeigen. Seien Sie nur vorsichtig, wenn Sie Ressourcen zuweisen (z. B. Datei öffnen, Speicherzuweisung usw.) und sie bei der Rückkehr aus der Funktion freigegeben werden müssen. In diesem Fall kann Trick mit goto Line Rental in der ersten Antwort beschrieben https://stackoverflow.com/a/245761

Verwandte Themen