2017-04-07 15 views
1

Sonar Lintのルール "メソッドが複雑すぎるはずはありません"(squid:MethodCyclomaticComplexity)には、プログラムブロックで複数のreturn文を使用する例があります。 (cyclormatic複雑計算ルールのhttps://groups.google.com/forum/#!topic/sonarqube/BtvGoF6Tw7E参照)複数の返品をすることは悪い習慣ですか?

戻りブランチのコードを短く、小さいコードブロックをもたらします。たとえば、

 

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

代わりに、(この場合は)メソッド変数またはそれ以上のブロックを使用します。コードを読む人は、最初の3行だけが "branch1"に関連していることを理解する前に、メソッド全体を読み取らなければなりません。

助言してください...

+0

'if'文はいくつありますか? 'Map 'を使うことはここでは改善されると主張することができます。 –

+0

あなたは正しいです。このような翻訳作業には、ルックアップマップが適しています。 – user2995767

答えて

0

私は個人的に例として示しています。リソース(たとえば、ファイルのオープン、メモリ割り当てなど)を割り当てる場合は、関数からの復帰時に解放する必要がある場合のみ注意してください。この場合、最初の答えに記載されているgoto line hireでトリックを使うことができますhttps://stackoverflow.com/a/245761

関連する問題