2012-12-09 52 views
5

是否有充分的理由使用陰影字段的參數?什麼是這兩者之間的區別:是否有充分的理由使用陰影字段的參數?

public class Point { 
    public int x = 0; 
    public int y = 0; 

    //constructor 
    public Point(int a, int b) { 
     x = a; 
     y = b; 
    } 
} 

public class Point { 
    public int x = 0; 
    public int y = 0; 

    //constructor 
    public Point(int x, int y) { 
     this.x = x; 
     this.y = y; 
    } 
} 

而如果你使用this關鍵字沒有在這個例子中的陰影字段(我猜它只是不要)參數:

public class Point { 
    public int x = 0; 
    public int y = 0; 

    //constructor 
    public Point(int a, int b) { 
     this.x = a; 
     this.y = b; 
    } 
} 

回答

5

我認爲這是一個風格問題,但特別適用於公共領域 - Point(int x,int y)自我記錄本身,而Point(int a, int b)沒有

+2

即使這些字段不是公共的,它們通常會暴露在類的公共API(getters,setters,methods)中,或者是類javadoc中所描述的對象狀態的一部分。使用一致的名字確實有幫助 –

2

在第二種情況下,很明顯,xy有一個目的,儘管存儲在兩個地方。如果你看到a,b,xy它們之間的關係並不明顯。

0

不同的是可讀性和什麼樣的IDE會告訴你。

IMO參數應儘可能描述性地命名,以便IDE和Javadoc儘可能具有通信性和表達性。

0

還有一個難以發現錯誤的問題。

在構造函數中使用x而不是this.x是bug的潛在來源。

相關問題