Java:从方法返回的最佳实践(通过if语句)

时间:2015-05-13 04:49:33

标签: java methods return return-value

我偶然发现了这两种方法,但我无法决定最终选择哪种方法。

public void myMethod() {
    if(isTrue())
        return;
    // code...
}

Vs以上。

public void myMethod() {
    if(!isTrue()) {
        // code...
    }
}

任何人都有一些令人兴奋的消息,哪种更好的做法?我很好奇人们如何处理这个问题。

看一下Invert "if" statement to reduce nesting解释了可读性,但是Java != C#,有什么不同吗?

3 个答案:

答案 0 :(得分:1)

亲爱的Karl因可读性和复杂性原因我会说第一种方式更好:

  1. 第一个选项更清楚,它避免在没有其他雕像时有一个两级缩进的方法:isTrue()是返回的条件,并且应该突出显示而不必读取整个方法代码。
  2. 使用第一个选项,一般来说,ciclomatic复杂度(https://en.wikipedia.org/wiki/Cyclomatic_complexity)较低,特别是如果if子句中有很多代码。
  3. if if with negation然后' isTrue'没有否定就不那么明确了。理解起来比较简单。

答案 1 :(得分:0)

我更倾向于第二个,原因是,我们专注于实际的业务逻辑。它还附带了确保我们的应用程序按预期工作所需的先决条件。

public void myMethod() {
    if(!isTrue()) {
        // code...
    }
}

说这个我并不是说第一种方式不是练习。相反,您可以说我们可以记录/跟踪最终用户流程,他们如何使用应用程序,趋势是什么以及他们通常去哪里。这也简化了代码的可读性。

public void myMethod() {
    if(isTrue())
        return;
    // code...
}

进入内存管理,对JVM来说并不重要,因为两者理想地会占用相似的执行时间。

答案 2 :(得分:0)

有时,我们可能必须在两种情况下都返回一些内容 - 条件是true还是false。然后我们可以这样做:

public someReturnType someMethod(){

   boolean isTrue = true;

   if(!isTrue){
      //do something which 
      //you want to do when the condition is false

      return;
   }

   //do other thing which you want to 
   //do if the condition is true

   return;
}

有时我们会从方法中返回ArrayListString,然后我们可以这样做 -

public ArrayList<Client> getClient(String city){

   List<Client> clients = //some query that generate ArrayList<Client>
   //do something

  return (null != clients ? clients : Collections.EMPTY_LIST);

  //While returning 'String' then you can do something like -
  //return (null != someString ? someString : ""); 

}

这种方法的优点是 - 使用getClient()方法的代码每次从null获得ArrayList<Client>时都不需要检查getClinet()方法