C#のプライベート変数のベストプラクティス、最も一般的に受け入れられている命名規則は何ですか?
private int myInteger;
private int MyInteger;
private int mMyInteger;
private int _myInteger;
private int _MyInteger;
どちらを使用しますか、またその理由は何ですか。 (私の会社はC#にかなり慣れていないので、最も「業界で受け入れられている」方法を選んで、コーディング標準に取り組みたいと考えています。)
MSDNクラスのデザインガイドライン http://msdn.Microsoft.com/en-us/library/ta31s3bc.aspx 推奨オプション1-myInteger。
私はいつもこのスタイルを使いました。私は_文字が個人的に嫌いです。
上記のオプション#4を使用します。
private int _myInteger;
私は変数名にスコープを示すのが好きで、アンダースコアで十分です。また、非常に読みやすいです。
次の命名規則を使用します。
オプション4は、最も読みやすいオプションだと思います。これはあなたがこれをしなければならないことからあなたを助けます:
public Person(string name, int age)
{
this.name = name;
this.age = age;
}
また、すべてのプライベートメンバーが目立つようになります。次の例では、一体どこからage
が来ていますか? this
修飾子がないと、わかりにくくなります。
private void Method()
{
var x = 2;
var y = age + x;
}
これは理解しやすい方法です:
private void Method()
{
var x = 2;
var y = _age + x;
}
まず、PascalCasingは通常、クラスのパブリックプロパティ、consts、メソッドなどのために予約されています。だから私は2と5をスキップします。
第二に、ハンガリー語の表記法は.NETの世界では推奨されていないため、(ええと、私は)3は正解です。それが3で起こっていることだと仮定します。
それはcamelCasingと_camelCasingを残します。私は通常、クラス変数には_camelCasingを使用し、スコープがメソッドまたはそれより狭い変数にはプレーンな古いcamelCasingを使用します。キャメルケーシングは、メソッド引数、保護された/プライベートな変数名、およびメソッドまたはより狭いスコープ内の変数に使用される標準として受け入れられています。
また、アンダースコアを先頭に追加して、プライベート変数がインテリセンスにグループ化されるようにします。ただし、これは型をスコープとする変数に対してのみ行います。メソッドまたはより狭いスコープ内で宣言された変数アンダースコアは省略します。それらを簡単に分離し、使用頻度の低い変数をまとめておくことが容易になります。
private int integer
メソッドスコープのメンバー変数とローカル変数が混同された場合は、おそらくリファクタリングが必要です。
オプション#4は、SSCLIがどのように見えるかという理由で実行しますが、正直なところ、プライベート変数の名前についてはそれほど気にしません。パブリックは別の話です。
ところであなたはm_MyIntegerを忘れました
私はそれを「私の」ものとは呼びません!
しかし、私は言います
class C
{
int VariableName { get; set; }
}
多くの場合、これは明示的な変数を持つよりも優れています。明示的なプライベート変数がある場合、それをint _variableName;
私はそれを行うための最良の方法(とにかくC#/。netで)は2と6の組み合わせであると考えています。
private int MyInteger { get; set; }
理論的には変数はまったくありませんが、プライベートインスタンス変数のように見え、動作します。その値にビジネスロジックを追加する必要がある場合(それは完全に内部的な値なので、結局私たちがやりたいことは何でもできます)、それは既に「プロパティ化」されています。勝利の熱い蒸しカップ!
アンダースコア付き。
Bill Wagnerがその理由を Effective C# で説明しています。しかし、私は整数myIntegerと名づけることは決してしません。 TypeNameをインスタンス名に含めるのは恐ろしい習慣です。名前は自明である必要があり、C#はタイプセーフであるため、常に型を見つけることができます。
C++では_を使用する傾向があります。エディターを切り替えると、プライベートかどうかを確認できないためです。
C#の場合、Visual Studioでプライベートかどうかを確認できるので、_を残しがちです。
私はこれを行うためにキャメルケースの方法を使用する傾向があります。
より具体的な例を示す必要がありますが、
private int count
、private int badFileCount
、private static readonly int ReconnectAttemptsLimit
ちなみに、最新の最高のMSFT Stylecop
をインストールして使い始めると、[〜#〜]無料[〜#〜]がすべて手に入ります。
私は4(private int _myInteger;
)理由:
private int myInteger;
これは、ローカル変数に名前を付ける方法です。
private int MyInteger;
これは、定数に名前を付ける方法です。
private int mMyInteger;
これはC#スタイルではありません。
private int _MyInteger;
これは奇妙に見えます。
私は自分の変数にReSharperという名前を付けています。これは私のものだけでなく、他の人も同じです。プロジェクト全体の一貫性は非常に高いです。
私はオプション5で行きます:private int _MyFoo
_myFooに勝る真の競争上の優位性はありません。
Juval LowyのIDesign C#コーディング標準 は非常に人気があります。この標準では、プライベートメンバー変数の前に「m_」を付けることを推奨しています(オプション6)。それが私たちのチームで行うことです。
private int m_myInteger;
オプション4(_myInteger
)は、この規格の許容可能なバリエーションです。
MSDNの推奨(myInteger
)は好きではありませんでした。ローカル変数からプライベートメンバーを区別するのが難しくなるためです。もちろん、彼らの推奨は、プライベートメンバーをthis
で修飾することによってこの問題を解決します。
myInteger
のようなプライベート変数にはcamelCasingを使用します
先行する_
混乱を減らすために、変数がプロパティのバックアップである場合-
変数_myProperty
プロパティMyProperty