2014-10-18 365 views
0
public boolean percentDepreciatedOutOfRange() { 
    if (percentDepreciated < DEPRECIATION_MIN || percentDepreciated > DEPRECIATION_MAX) { 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

上面的代码可以在没有else语句的情况下编写,并且在if语句后面只有return false;并且仍然具有相同的结果吗?如果是这样,为什么?这就是我的意思布尔值和返回值

public boolean percentDepreciatedOutOfRange() { 
    if (percentDepreciated < DEPRECIATION_MIN || percentDepreciated > DEPRECIATION_MAX) { 
     return true; 
    } 
    return false; 
} 
+3

是的。两者意味着相同。 – TheLostMind 2014-10-18 06:21:23

回答

4

你应该只写

public boolean percentDepreciatedOutOfRange() { 
    return percentDepreciated < DEPRECIATION_MIN || percentDepreciated > DEPRECIATION_MAX); 
} 

这是更具可读性。避免陈述如

If (xxx) { return true; } 
else { return false; } 

因为如果只是在表达式周围增加噪声。

这是合法的原因是布尔类型在评估if表达式和方法的返回类型时是相同的。

1

因为return实际上退出函数(方法)。

在未输入if的情况下,其余代码将正常执行。

由于您有booleanreturns,在函数的末尾有return false,意味着一切到最后都失败。

你甚至可以它改写为:

public boolean percentDepreciatedOutOfRange() { 
    if (percentDepreciated < DEPRECIATION_MIN) { 
     return true; 
    } 
    if (percentDepreciated > DEPRECIATION_MAX) { 
     return true; 
    } 

    return false; 
} 

要明确规定的方法测试。

0

另一种方式我很喜欢:

  1. 定义返回变量与默认值1语句。
  2. 变化以各种BIZ逻辑
  3. 返回变量的值(单return语句)

    公共布尔percentDepreciatedOutOfRange(){ 布尔状态=假方法的变量; status = percentDepreciated < DEPRECIATION_MIN || percentDepreciated> DEPRECIATION_MAX; 返回状态; }