接頭辞に関するこの質問の補足として、接頭辞が悪いというスレッドのほとんどの人に同意します。しかし、ゲッターとセッターを使用している場合はどうでしょうか? 次に、パブリックにアクセス可能な getter 名をプライベートに格納された変数から区別する必要があります。私は通常アンダースコアを使用しますが、より良い方法はありますか?
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; }
どちらも正しい答えではありません。それぞれにスタイルの長所と短所があります。あなたが一番好きなものを選んで、それを一貫して適用してください。
他の人が言及しているように、フィールドの前にアンダースコアを付けるのが好きです。
private int _x;
ただし、これは個人的な好みを超えていると思います (このスレッドで David Arno が述べたように)。これを行うには、いくつかの本当の客観的な理由があると思います。
- これは、代入のために "this.x = x" を記述する必要がないことを意味します (特にセッターとコンストラクターで)。
- フィールドとローカル変数/引数を区別します。これを行うことが重要です。フィールドは、スコープが広く、有効期間が長いため、ローカルよりも扱いが難しいです。余分な文字を追加することは、コーダーにとってちょっとした精神的な警告サインです。
- 一部の IDE では、アンダースコアによってオートコンプリートがフィールドを候補リストの一番上に並べ替えます。これにより、クラスのすべてのフィールドを 1 つのブロックで簡単に確認できます。これは役に立ちます。大きなクラスでは、作業中のコードと同じ画面にフィールド (通常はクラスの上部に定義されている) が表示されない場合があります。上に並べると参考になります。
(これらの規則は Java 用ですが、他の言語にも同様の規則が存在します)
これらは些細なことのように思えますが、それらの普及により、コーディングの作業が確実に楽になります。
Java には this.foo があり、Python には self.foo があり、他の言語にも同様のものがあるため、言語構造を既に使用できる場合、特別な方法で何かに名前を付ける必要はないと思います。同じコンテキストで、優れた IDE とエディターはメンバー変数を理解し、それらに特別なハイライトを与えるため、特別な名前を使用しなくても実際に見ることができます。
「this.x=x」と書くのが好きです。それは私には非常に明白です。さらに、Eclipseを使用する場合、この方法でゲッター/セッターを自動的に生成することができます。
大文字と小文字を区別する言語では、次を使用します。
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
これを行うプログラマーの数とほぼ同じ数の方法がありますが、より一般的な方法には次のようなものがあります (プロパティの場合Foo
):
- mFoo
- m_foo
- _foo
- ふー