2010-08-19 37 views
0

在什麼情況下你會使用字段變量而不是局部變量?我發現很難決定何時在一個類中使用兩個或更多方法來使用變量。我傾向於使用局部變量並將它們傳遞給另一個方法。何時使用字段變量?

感謝,

薩拉

+0

相關/重複:http://stackoverflow.com/questions/1794141/java-instance-variables-vs-local-variables – 2010-08-19 23:57:27

回答

6

在面向對象的術語中,變量是否有意義作爲對象的屬性?如果是這樣,你應該把它變成一個字段變量。如果沒有,它可以去任何一方面。

記住單一責任原則 - 精心設計的課程應該只有1項責任,因此只有1個理由需要改變。

1

我絕對繞不變量傳遞給其他方法,除非有一個非常具體的原因。如果變量在類中多次使用,則將其設置爲字段變量。這幾乎總是讓你的代碼更加靈活。

一般來說,你也可以認爲變量作爲類的一部分是有意義的。也就是說,Car類具有變量numOfMiles是有意義的,即使它只用了幾次。但是,如果有一種方法是int GetAmountOfGasUsed(int milesThisTrip),將英里變量作爲局部變量傳遞是有意義的,因爲您旅行的距離可能不是特定於汽車的。

7

一個字段表示某種與您的班級實例相關的狀態。例如,BankAccount可能有一個balance字段。

您不應該使用字段來簡化將數據從一個方法傳遞到另一個方法。這根本不是它的目的。這樣做也會使您的方法內在地線程不安全或需要同步。

局部變量只是臨時存儲數據,用於支持正在通過方法完成的操作。例如,

public void addInterest(double rate) { 
    double toAdd = rate * balance; 
    logTransaction("Interest", toAdd); 
    balance += toAdd; 
} 

TOADD這裏是沒有意義的,因爲現場是臨時的操作,而不是該帳戶的狀態的一部分。

0

如果使用該變量的方法也需要修改該值,那麼通過所有方法將其設置爲字段變量。但是,如果他們只讀取價值,就可以安全地將它傳遞出去。

相關問題