5

フィールドをシャドーするパラメーターを使用する正当な理由はありますか? これら2つの違いは何ですか:

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;
    }
}
4

4 に答える 4

5

それはスタイルの問題だと思いますが、特にパブリックフィールドの場合、それ自体Point(int x,int y)自己文書化されていますが、そうではありPoint(int a, int b)ません

于 2012-12-09T00:18:59.587 に答える
2

2 番目のケースでは、2 つの場所に格納されていますが、目的が 1 つxであることは明らかです。、、およびyが表示された場合、それらの間の関係が明らかではありません。abxy

于 2012-12-09T00:18:42.847 に答える
0

また、バグを検出しにくいという問題もあります。

コンストラクターで this.x の代わりに x を使用すると、潜在的なバグの原因となります。

于 2014-11-15T18:59:38.877 に答える
0

違いは、読みやすさと、IDE で表示される内容です。

IMO パラメータは、IDE と Javadoc が可能な限り伝達的で表現力豊かになるように、可能な限りわかりやすい名前を付ける必要があります。

于 2012-12-09T00:20:12.150 に答える