多次退货是不好的做法吗?

时间:2017-04-07 16:13:19

标签: multiple-return-values

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"相关之前阅读整个方法。

请告知......

1 个答案:

答案 0 :(得分:0)

我个人照你的例子展示。只有在分配资源时才要小心(例如文件打开,内存分配等),并且需要在从函数返回时释放它。在这种情况下,可以使用第一个答案https://stackoverflow.com/a/245761

中描述的goto line hire技巧