2012-12-09 18 views
5

Gölge alanlarının parametrelerini kullanmanın iyi bir nedeni var mı? Bu ikisi arasındaki fark nedir:Gölge alanlarının parametrelerini kullanmak için iyi bir neden var mı?

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

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

ve

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

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

Ve ne bu örnekte gölge alanlar (Ben sadece gereksiz olduğunu tahmin ediyorum) parametre olmadan this anahtar kelimeyi kullanırsanız

:

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

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

cevap

5

Ben bir stil sorunu olduğunu düşünüyorum, ama özellikle kamu alanları için - Point(int x,int y) kendini belgeleyen kendini olduğu, Point(int a, int b) fark okunabilirliği ve ne bir IDE gösterecektir

+2

Ve alanlar kamuya açık olmasalar bile, genellikle sınıfın public API'siyle (getçiler, ayarlayıcılar, yöntemler) veya javadoc sınıfında açıklandığı gibi nesnenin durumunun bir kısmı tarafından görünürler. Tutarlı isimleri kullanmak gerçekten yardımcı olur. –

2

iki yerden saklanan olsa x ve y bir amacı olmadığı aşikardır. a, b, x ve y'u görüyorsanız, aralarındaki ilişkinin ne olduğu açık değildir.

0

değil iken. IMO ve Javadocs'lar mümkün olduğunca iletişimsel ve etkileyici oldukları için IMO parametreleri mümkün olduğunca açıklayıcı olarak adlandırılmalıdır.

0

Ayrıca, hataları saptamanın zorluğu da vardır. Bir kurucuda this.x yerine x yerine

, olası bir hata kaynağıdır.

İlgili konular