2012-02-07 4 views
1

私はOOPの多くの大きなプロジェクトを読んでおり、その多くはthis.[variable][ClassName].[staticVariable]を使用しています。例えば:それは不要だが、ローカル変数がそこに宣言されていないため「これを使う」の利点

public class ABC { 

    private float mX; 
    public static float y;  

    public float getX() { 
     return this.mX; 
    } 

    public float doSomethingWithY() { 
     return ABC.y; 
    } 

} 

とにもEclipseの自動生成Getters & Setters機能と、それはまた、this.[variable]が付属しています。

これらの表記を使用する際に利点はありますか、それとも単なるコードスタイルですか?

EDITので、誤解しないでください。私はthis[ClassName].[staticVariable]の略です。しかし、この場合は不要です。問題は、それが不要な場合でも、なぜグル・コーダーはそれを追加するのですか?彼らが巨大なプロジェクトを更新/修正する必要がある場合、利点と欠点はありますか?

+0

そのコーディングスタイル... stylecopによって使用され、 resharperではデフォルトでは使用されません。 – Tanmoy

答えて

2

同じ名前のローカルメソッドパラメータではなくメンバ変数を使用する必要がある場合は、たとえばthis.が必要です。

静的変数を取得するクラスを特定する必要がある静的変数(多くのクラスでは、同じ名前の静的変数を定義できます)が必要です。

必要な場合を除いて、実際にはコーディングスタイルの問題です。潜在的なあいまいさを解消するのに役立ちますと、を使用することをお勧めします。コードの小片、それは問題ではありませんが、時々この現象が発生することができますについては

+0

欠点はありますか?私はあいまいさによって問題に遭遇することは決してないので、この方法を使用すると安全だと感じます。 –

+0

少しの余分なタイピングから離れて、本当の欠点はありません。野生に行ってください。 – mikera

1

複雑な方法では、このクラスのインスタンス変数と特定の関数のローカル変数を区別するのが良いことがあります。この区別は、「this」を使用するとすぐに明らかです。

0

:この場合

 
public float getX() { 
    .... 
    int mX = someFunc() 
    ... 
    return mX; 
} 

は、ローカル値ではなく、メンバ変数の返されます。

通常、明示的に言いたいと言うと、this.mXとします。しかし、とにかく巨大な機能を持つべきではありません。

0
this.? '?' is a member variable, this is a reference to the current object. 

はあなたがいないメソッドの内部で作成された変数で、クラス属性を使用して作業していることを確実に知るか、多分、パラメータとして受け取った、これで基本的に

3

thisを参照してください。

また、同じ名前のローカル変数がある場合に役立ちます。

最終的な理由は読みやすいです。

0

その構文、あなたが(オブジェクトの参照)を使用したクラスのインスタンス変数にアクセスしたい場合。(インスタンス変数名).Like

A a= new A();// for non static class,this for the current object 
a.(instance variable name) 
// for non static class do the same but use (class name).variable name