2017-04-07 28 views
1

Sonar Lint規則「方法不應太複雜」(squid:MethodCyclomaticComplexity)有一個在程序塊中使用多個return語句的示例。 (有關循環複雜度計算規則,請參見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

相關問題