我偶然发现了这两种方法,但我无法决定最终选择哪种方法。
public void myMethod() {
if(isTrue())
return;
// code...
}
Vs以上。
public void myMethod() {
if(!isTrue()) {
// code...
}
}
任何人都有一些令人兴奋的消息,哪种更好的做法?我很好奇人们如何处理这个问题。
看一下Invert "if" statement to reduce nesting解释了可读性,但是Java != C#
,有什么不同吗?
答案 0 :(得分:1)
亲爱的Karl因可读性和复杂性原因我会说第一种方式更好:
答案 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;
}
有时我们会从方法中返回ArrayList
或String
,然后我们可以这样做 -
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()
方法