將類變量作爲參數傳遞給私有方法而不是簡單引用它們有什麼優缺點嗎?隨着我的類越來越長,我擔心未來的編碼器需要滾動到類的頂部來確定「foo」是什麼,所以我正考慮在調用方法時將它們作爲參數傳遞,但我不是當然,如果這會導致我不考慮其他問題。私有方法中的類變量
在短;是這樣的:
public class Foo {
private int number = 0;
public Foo(int startingNumber) {
this.number = startingNumber;
}
public int biggerNumber() {
return embiggenIt(number);
}
// ... Many lines of code ...
private int embiggenIt(int aNumber) {
return aNumber++;
}
}
任何比這更好或更壞:
public class Foo {
private int number = 0;
public Foo(int startingNumber) {
this.number = startingNumber;
}
public int biggerNumber() {
return embiggenIt();
}
// ... Many lines of code ...
private int embiggenIt() {
return this.number++;
}
}
...如果是這樣,爲什麼?
編輯
好了,所以顯然我應該在這裏說明,我不關心改變類變量,我不知道爲什麼每個人都跳了這樣的結論;我沒有意識到我的例子太可怕了(儘管我匆忙地把它拍了下來)。在這個例子中,我關心的是運行該方法後的返回值(認爲函數式編程)。
這也許是一個更好的例子是什麼我談論:
public class Foo {
private static final int number = 0;
public Foo() {
}
public int biggerNumber() {
return embiggenIt(number);
}
// ... Many lines of code ...
private int embiggenIt(int aNumber) {
return aNumber +1;
}
}
V.S.
public class Foo {
private static final int number = 0;
public Foo() {
}
public int biggerNumber() {
return embiggenIt();
}
// ... Many lines of code ...
private int embiggenIt() {
return this.number +1;
}
}
我會強調,變量不必是恆定的,但我補充說,只是要清楚,我不是有意改變變量(我的理解通過引用傳遞VS路過的價值,謝謝)。
既然我們更清楚一點,兩種方法是否有所作爲?你更喜歡看哪個?哪一個會讓你打破Jr.程序員的指關節?
你是否明白這兩個代碼有不同的行爲? –
請注意,一個原始類型將被傳遞_asp value_,與'object'相對,後者將被reference_傳遞。你的第一個例子將不會增加類成員。 –
@XaviLópez偶對象引用是按值傳遞的。 –