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”相关之前阅读整个方法。
请指教 ...
我亲自做的就像你在示例中所示。 只有在分配资源时才要小心(例如文件打开,内存分配等),并且需要在从函数返回时释放它。 在这种情况下,可以使用第一个答案https://stackoverflow.com/a/245761中描述的goto line hire技巧