2014-10-18 27 views
6

有人可以向我解釋爲什麼它給我「局部變量是多餘的錯誤」?局部變量是多餘的java

public double depreciationAmount() { 
    double depreciationAmount = (cost * percentDepreciated); 
    return depreciationAmount; 
} 

回答

13

爲什麼它讓我能有人向我解釋「局部變量是多餘的錯誤」?

因爲您可以在不使用本地變量的情況下輕鬆地編寫它。

public double depreciationAmount() { 
    return cost * percentDepreciated; 
} 

因此,本地變量是不必要的/多餘的。


但是,我推測這不是編譯器錯誤。它可能是一個編譯器警告,或者更可能是一個樣式檢查器或錯誤檢查器警告。這是你可以忽略的任何風險,沒有任何風險,正如你所寫的代碼一樣。另外,我還會預測,一旦代碼被JIT編譯(通過現代Hotspot JIT編譯器......),兩個版本之間就不會有性能差異。

1

你只使用percentDepreciated的值返回它時,你可能只是做了return (cost * percentDepreciated)

4

雖然不是這裏的情況,如果有多餘的局部變量所需的(我有一個時間,其中是這樣的話 - 沒有詳細說明),這裏是如何抑制這個特定的警告。

@SuppressWarnings("UnnecessaryLocalVariable") 
public double depreciationAmount() { 
    double depreciationAmount = (cost * percentDepreciated); 
    return depreciationAmount; 
} 
+0

Martin Fowler的[提取變量](https://refactoring.com/catalog/extractVariable.html)是一個例子,其中一個 「冗餘」 局部變量是期望的。該原則也被稱爲[引入解釋變量](http://wiki.c2.com/?IntroduceExplainingVariable)。 – 2018-02-14 19:52:32