4

接頭辞に関するこの質問の補足として、接頭辞が悪いというスレッドのほとんどの人に同意します。しかし、ゲッターとセッターを使用している場合はどうでしょうか? 次に、パブリックにアクセス可能な getter 名をプライベートに格納された変数から区別する必要があります。私は通常アンダースコアを使用しますが、より良い方法はありますか?

4

6 に答える 6

6

これは完全に主観的な質問です。「より良い」方法はありません。

1 つの方法は次のとおりです。

private int _x;
public get x():int { return _x; }
public set x(int val):void { _x = val; }

もう一つは:

private int x;
public get X():int { return x; }
public set X(int val):void { x = val; }

どちらも正しい答えではありません。それぞれにスタイルの長所と短所があります。あなたが一番好きなものを選んで、それを一貫して適用してください。

于 2008-10-03T23:07:52.567 に答える
6

他の人が言及しているように、フィールドの前にアンダースコアを付けるのが好きです。

private int _x;

ただし、これは個人的な好みを超えていると思います (このスレッドで David Arno が述べたように)。これを行うには、いくつかの本当の客観的な理由があると思います。

  1. これは、代入のために "this.x = x" を記述する必要がないことを意味します (特にセッターとコンストラクターで)。
  2. フィールドとローカル変数/引数を区別します。これを行うことが重要です。フィールドは、スコープが広く、有効期間が長いため、ローカルよりも扱いが難しいです。余分な文字を追加することは、コーダーにとってちょっとした精神的な警告サインです。
  3. 一部の IDE では、アンダースコアによってオートコンプリートがフィールドを候補リストの一番上に並べ替えます。これにより、クラスのすべてのフィールドを 1 つのブロックで簡単に確認できます。これは役に立ちます。大きなクラスでは、作業中のコードと同じ画面にフィールド (通常はクラスの上部に定義されている) が表示されない場合があります。上に並べると参考になります。

(これらの規則は Java 用ですが、他の言語にも同様の規則が存在します)

これらは些細なことのように思えますが、それらの普及により、コーディングの作業が確実に楽になります。

于 2008-10-03T23:18:26.930 に答える
3

Java には this.foo があり、Python には self.foo があり、他の言語にも同様のものがあるため、言語構造を既に使用できる場合、特別な方法で何かに名前を付ける必要はないと思います。同じコンテキストで、優れた IDE とエディターはメンバー変数を理解し、それらに特別なハイライトを与えるため、特別な名前を使用しなくても実際に見ることができます。

于 2008-10-03T23:07:48.900 に答える
1

「this.x=x」と書くのが好きです。それは私には非常に明白です。さらに、Eclipseを使用する場合、この方法でゲッター/セッターを自動的に生成することができます。

于 2008-10-04T01:08:05.460 に答える
1

大文字と小文字を区別する言語では、次を使用します。

private int myValue;

public int MyValue
{
    get { return myValue; }
}

それ以外の場合は、アンダースコアを使用します

Private _myValue As Integer

Public ReadOnly Property MyValue As Integer
    Get
        Return _myValue
    End Get
End Property
于 2008-10-03T23:06:49.043 に答える
1

これを行うプログラマーの数とほぼ同じ数の方法がありますが、より一般的な方法には次のようなものがあります (プロパティの場合Foo):

  • mFoo
  • m_foo
  • _foo
  • ふー
于 2008-10-03T23:07:26.780 に答える