9

Java では、「this」キーワードを実際に記述する必要はありません。しかし、とにかくそうする方が良いですか?あなたのスタイルを均質化することは理にかなっていますか?つまり、「this」を一度使用すると、それが暗示されるたびに使用することになりますか? それともいつも使う場所と使わない場所はありますか?

4

4 に答える 4

20

一般的なコンセンサスは、this必要な場合にのみ使用し、それ以外の場合には使用しないことです。

private String param;
public Construct(String param) {
  // Usually the only place you need to use this.
  this.param = param;
}

// A less common use of this
public Function() {
  synchronized(this) {
    // Some synchronized stuff.
  }
}
于 2013-02-18T09:08:25.177 に答える
6

原則として、私はそれを使用しない傾向があります-冗長なコードを減らすことができれば、なおさらです。

ただし、 this キーワードを避けることができない場所として考えられる場所が 3 つあります。

  • コンストラクター (同じクラス内の別のコンストラクターへの委譲)

    public MyClass() {
        this("Default Parameter");
    
  • 現在のオブジェクトで同期しています

    synchronized(this) {

  • 現在のオブジェクトを別のクラスに渡す

    public void methodOne() {
        anotherClass.doSomething(this);
    

フィールド名がパラメーターと同じであるコンストラクターで必要になることがありますが、パラメーターの名前を変更するだけでよいため、これは実際には必須ではありません。

public MyClass(String data) {
    this.data = data

これら以外に、thisキーワードを使用するシナリオが多すぎるとは思いつきません。私はそれが(すべてのメソッドとフィールド参照で)過度に使用されているのを見てきました。これにより、コードが非常に読みにくくなる可能性があります。

必要な場合、またはコードの可読性が向上すると思われる場合にのみ使用してください。

于 2013-02-18T09:37:51.823 に答える
4

原則として、冗長な構文が発生する可能性がある場合は、それを避ける必要があります。反対に多くの意見を読むでしょう。ほとんどの場合、メンバー変数について知らず、括弧が何のためにあるのかを知らず、3番目に教えられた演算子の優先順位の規則を覚えていない完全に神話的なプログラマーを指します。学年。私は40年間彼に会ったことがありません。それは、彼が(a)それを理解せず、(b)したがってそれを壊すだろうという仮定の下で、彼のためにあなたのコードを傷つけることを正当化するのに十分ではありません。私はそれがまったく起こらないのを見たことがありません。

見たのは、そのような人によって作成されたコードです。それは彼のためにあなた自身のコードをばかにする理由ではありません。誰かが実際に私のコードを誤って書き直したのは2回だけです。1979年に1回、誰かが文法をリファクタリングして演算子の優先順位を削除しましたが、これはばかげていたはずです。それと、1992年頃の別の時期ですが、どちらの場合も、それを妨げる文法やコードを書くことはできませんでした。

于 2013-02-18T09:14:25.513 に答える