2017-04-07 1 views
1

Règle Sonar Lint "Les méthodes ne doivent pas être trop complexes" (squid: MethodCyclomaticComplexity) a un exemple d'utilisation de plusieurs instructions return dans le bloc de programme. (voir https://groups.google.com/forum/#!topic/sonarqube/BtvGoF6Tw7E pour les règles de calcul de complexité cyclormatique)Est-ce une mauvaise pratique d'avoir plusieurs retours?

Les retours raccourcissent les codes dans une branche et se traduisent par des blocs de code plus petits. Par exemple,

 

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

L'alternative utilisera une variable de méthode (dans ce cas) ou des blocs plus grands. Celui qui lit le code doit lire toute la méthode avant de réaliser que les trois premières lignes sont pertinentes pour la "branche1".

S'il vous plaît conseiller ...

+0

Combien d'instructions 'if' avez-vous? On pourrait soutenir que l'utilisation d'un 'Map ' serait une amélioration ici. –

+0

Vous avez raison. Une carte de recherche est une meilleure approche pour le travail de traduction comme celui-ci. – user2995767

Répondre

0

Je fais personnellement vous montrer l'exemple. Attention seulement si vous allouez des ressources (par exemple l'ouverture d'un fichier, l'allocation de mémoire, etc.) et que vous devez le libérer au retour de la fonction. Dans ce cas peut être utilisé truc avec goto ligne de location décrite dans la première réponse https://stackoverflow.com/a/245761