Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果then子句无论如何退出该方法,则使用“else”的赞成/反对_Java_If Statement_Return - Fatal编程技术网

Java 如果then子句无论如何退出该方法,则使用“else”的赞成/反对

Java 如果then子句无论如何退出该方法,则使用“else”的赞成/反对,java,if-statement,return,Java,If Statement,Return,这两种方法中哪一种更好?为什么 if(list.isEmpty()) { return; } else { [...] } vs 如果键入: if(list.isEmpty()) { return; } else { [...] } 如果第一个块不是真的,并且使用以下命令时,可以添加一些代码来处理else块: if(list.isEmpty()) { return; } [...] 您实际上是在说:如果失败了,我不想做任何事情。第一种方法中的els

这两种方法中哪一种更好?为什么

if(list.isEmpty()) {
    return;
} else {
    [...]
}
vs

如果键入:

if(list.isEmpty()) {
    return;
} else {
    [...]
}
如果第一个块不是真的,并且使用以下命令时,可以添加一些代码来处理else块:

if(list.isEmpty()) {
    return;
}

[...]
您实际上是在说:如果失败了,我不想做任何事情。

第一种方法中的else是多余的,因为return语句

对于在特定条件下提前停止评估的情况,第二种方法更好,因为它降低了嵌套级别。这在多次执行返回或抛出的提前停止时变得尤为重要:

if (arg1 == null) {
    throw new IllegalArgumentException();
} else {
    if (arg2 == null) {
        throw new IllegalArgumentException();
    } else {
        if (arg3 == null) {
            throw new IllegalArgumentException();
        } else {
            ... // Payload code goes here
        }
    }
}
它的可读性不如

if (arg1 == null) {
    throw new IllegalArgumentException();
}
if (arg2 == null) {
    throw new IllegalArgumentException();
}
if (arg3 == null) {
    throw new IllegalArgumentException();
}
... // Payload code goes here

上面的示例使用throw,但return的参数相同。

if!isEmpty{…做点什么}我肯定会选择第二个选项。尽早返回-如果您已经获得无效数据/条件,则没有理由继续。这样做的另一个好处是减少了嵌套,使代码更具可读性@khelwood的方法虽然完全有效,但将整个方法缩进一个制表符。@khelwood这会使我的代码不那么容易阅读,因为我只想在出现错误时返回false,例如,当给定列表为空时……另请参见:这只是对代码中明显的内容的解释。如果你要回答一个基于观点的问题;请给出你的意见。
if (arg1 == null) {
    throw new IllegalArgumentException();
}
if (arg2 == null) {
    throw new IllegalArgumentException();
}
if (arg3 == null) {
    throw new IllegalArgumentException();
}
... // Payload code goes here