2011-06-14 139 views
5

我有一種通用的java問題,我正在尋找答案。比方說,我有一個屬性高度的對象,我有一個方法,使用高度進行一些計算。將屬性高度傳遞給方法更好嗎,還是傳遞完整對象並使用getter來獲取高度值是否更好?我希望這是有道理的。Java參數傳遞問題

例如

public getHeightInMeters(Object object) { 
    return object.getHeight()*x; 
} 

是一樣的,更糟糕​​的,比?

public getHeightInMeters(Height height) { 
    return height*x; 
} 
+0

@Sanjay T. Sharma同意 – RMT 2011-06-14 16:52:45

+0

將簽名更改爲函數原型而非構造函數可能是值得的。只是說。 – 2011-06-14 16:54:08

+0

@Mike表示添加返回類型。 – Snicolas 2011-06-14 16:59:36

回答

2

這取決於。

如果您正在執行的操作在語義上與對象的類型相關聯,那麼傳遞該對象是有意義的。或者如果您正在使用該對象的多個屬性。

如果操作是通用的,也就是說,它適用於整數而不是對象的特定屬性,那麼只需接受一個整數。

2

第二個版本更好。我有一個較不復雜的簽名。由於getHeightInMeters()方法只需要高度值,所以應該保持簡單。

2

第二個。 getHeightInMeters是否關心對象的任何事情?如果不是,那麼它不需要它。

所有它需要的是高度,所以這就是你應該通過它。

1

第二個是最好的/ 正確的方式

最好傳遞屬性高度,因爲你打破了依賴關係。也就是說,如果您更改傳入的對象,刪除/重命名方法,您將最終導致巨大的頭痛。此外,如果您只是傳遞屬性高度,您將始終知道進入的內容以及出現的內容。

0

僅傳遞高度信息所需的開銷比整個對象少,因爲每次只有較少的數據要序列化。對於一個小應用程序來說,它沒有什麼區別,但隨着您的擴展,您將承受更大的開銷。

如果這是您從對象中需要的唯一屬性,那麼這是更好的選擇。

0
class Person { 

private double height; 

public void setHeight(double height){ 
    this.height = height; 
} 

public double getHeight(){ 
    return height; 
} 
} 

該公約可能是這個級別的高度是米。 但是,您可以創建一些convertes其他指標

public class Converter{ 

public static double convertFromMeterToInch(double meters){ 
return meters * 'some factor you get from net' 
} 

public static double convertFromInchtoMeter(double inch){ 
return .... 
} 
} 
0

這一般取決於:

如果您正在使用該對象的第一個解決方案是不是增加更多的參數更好的一個以上的財產。這也意味着操作是否僅與對象相關,否則使用第二種形式,如果這只是可以在其他對象上執行的某種原子操作。

另一件事它的帽子get前綴應該一般用於類成員,在這種情況下它像接縫一樣只對某些常量和外部值起作用。我們不是它的單位。更好的命名是例如pixelsToMetters(int pixel),在這種情況下,我們知道兩個單位。

0

由於爲getXXXX()一般是用於存取方法的命名規則,這將是你的類的一部分,所以這樣的事情就夠了:

public double getHeightInMeters() { 
    return this.height*x; 
} 

如果你需要一個純粹的轉換器,將其命名爲不同的是傳遞一個double,因爲它對你傳遞的Object沒有任何作用。這樣你也可以重用這個方法用於任何其他的上下文。

讓事情變得簡單!