ゲッターとセッターを使用している場合、プライベートメンバー変数にどのように名前を付ける必要がありますか?
質問
へのフォローアップの一種として>この質問プレフィックスについて、スレッドのほとんどの人がプレフィックスが悪いことに同意します。しかし、ゲッターとセッターを使用している場合はどうでしょうか?次に、パブリックにアクセス可能なゲッター名とプライベートに保存された変数を区別する必要があります。通常はアンダースコアを使用しますが、より良い方法はありますか?
解決
これは完全に主観的な質問です。 「良い」というものはありません。方法。
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にはpythonにthis.fooがあり、self.fooがあり、他の言語にも同様のものがあります。そのため、言語コンストラクトを既に使用できる場合、特別な方法で名前を付ける必要はありません。同じコンテキストで、優れたIDEとエディターはメンバー変数を理解し、特別なハイライトを与えるので、特別な名前を使用せずに実際に見ることができます。
大文字と小文字を区別する言語では、次を使用します。
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
- foo
I like と書いて" this.x = x"。私には非常に明確です。さらに、Eclipseを使用している場合、この方法でgetter / setterを自動的に生成することができます。