Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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 使用多个if语句而不是else if语句,当每个语句返回某些内容时_Java_Performance_If Statement_Readability - Fatal编程技术网

Java 使用多个if语句而不是else if语句,当每个语句返回某些内容时

Java 使用多个if语句而不是else if语句,当每个语句返回某些内容时,java,performance,if-statement,readability,Java,Performance,If Statement,Readability,我写了一段代码,看起来像这样 public boolean check(String i){ if(i.isEmpty()){ doSomething(); return true; } else if(i.equals("something")){ doSomethingElse(); return true; }

我写了一段代码,看起来像这样

public boolean check(String i){
        if(i.isEmpty()){
            doSomething();
            return true;
        }
        else if(i.equals("something")){
            doSomethingElse();
            return true;
        }   
        return false;
    }
在代码检查期间,我得到了一条注释,删除了“elseif”块,因为第一个“if”块有一个return语句,使得另一个块无法访问

所以我很好奇,当每个块返回某个内容时,使用多个“if”语句是否比使用“else-if”语句有任何优势。 与“else-if”相比,使用多个if语句是否提高了代码的性能或可读性?在这种情况下,为什么选择多个“如果”而不是“其他如果”?
我知道它们在功能方面是一样的。

我想你需要和代码审查员谈谈。我很确定,如果代码中的“if”语句返回false,则可以访问else if else if(i.equals(“something”){不是不可访问的代码。当输入为非空值时,它将执行else if块,并且输入值等于“something”,则执行else if块内的语句

根据业务场景的不同,我们需要使用if-elseIf。如果我们只使用if语句,则每个if条件都将被评估。执行评估需要一些时间


如果我们知道我们需要在true case中执行一些操作,在false case中执行一些操作,那么最好使用If-elseif..

它与可访问或不可访问有关。如果is不为空,则将访问else


我认为,一旦它进入第一个代码,如果流将返回,那么else中就没有任何意义。换句话说,else不会添加任何东西,因此它是噪音。有些人更喜欢使用其他代码。我个人认为没有其他代码更容易理解。

很难回答您的问题,因为前提是不正确的。else if绝对是可以达到的。这里是否缺少一些上下文可以实现这一点?可读性的问题本质上是基于观点的。就个人而言,我写这篇文章时没有使用
else
s,但更多的是出于习惯,而不是任何特定的信念,即它是“更好的”。(当然没有性能差异)我称这个概念为“平面代码”,这在这里只是松散地应用。基本上,您可以偶尔拉出条件,而不是嵌套的if语句,这样if语句就可以立即返回。不过,在这种情况下,删除的唯一代码是
else
,因此这在这里并不是一个大问题。@Gary我提供的代码中没有缺少任何内容。字符串可能是or可能没有任何值。这个问题是基于观点的。但我会尝试在一种方法中避免多次返回。Rossini是对的,而另一种方法只是增加了噪音。简单看一下代码,
else
意味着控制可以继续通过第一个if语句而不执行
doSomtehing()
。不,else不仅仅是noise。如果条件为elseif-!empty,则为elseif-!empty,但不是。只有当等式为true时才会发生这种情况。@gary它是完全的noise。如果条件不为true,则转到下一个条件,不管else是否存在,因此它不需要,因此它是noise。“elseif-!empty”根据定义是“isEmpty”的else子句……哦,你的意思只是“else if”中的“else”。我以为你在调用整个第二个条件noise。@greg不是整个else块,只是“else”关键字:)很像这样:是的,我知道代码是可以访问的,因为我已经为它编写了JUnit。我的问题是在上述情况下,
if
是否优于
else if
?是否有任何性能差异?我已经向代码审阅者提出了相同的问题,但我无法从审阅者那里得到f的答案最近几天。谢谢@Riza。对于你的问题,在我看来,没有太大的性能差异。我个人确实使用“else if”在这种情况下,这只是一种习惯。因为它检查相同的字符串引用。但是任何一种方法都可以,两者都是可读的。顺便说一句,你需要在I.isEmpty()之前检查“null==I”吗检查?只是防止NPE。