2014-10-18 236 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; 返回狀態; }