私はこれがばかげた質問かもしれないことを知っています、しかしここにそれは行きます。私はいつもプライベートメンバーを次のように書いていました。ビジュアルスタジオで自動生成されたコードの多くがプライベートメンバーにprivateMember
使用されていることに気付いたので、C#での命名規則についてたくさん読んでいます。_variableName
マイクロソフトのドキュメントであっても、私が読んだすべての場所で、を使用する必要がありますprivateMember
。だから、私の質問は、今のように、グッドプラクティスが私が書くべきだと言っているのならprivateMember
、なぜ一体のVisual Studioがアンダースコア(_privateMember
)を使用してプライベートメンバーでクラスを生成するのですか?
7 に答える
Microsoftのコード規約では、実際にはアンダースコアを使用しないことを推奨しています。それは本当に個人的な好みです。生成されたコードをコーディング規約標準のインスピレーションとして使用することはありません。
アンダースコア、ハイフン、またはその他の英数字以外の文字は使用しないでください。
おそらくそれは生成されたコードであり、人間が読むことを意図していないためです。;-)
命名規則は100%合意されていません。これは、好きな人もいれば、無関心な人もいれば、嫌いな人もいます。特定の人々は、インスタンス変数が名前で目立つ方が良いと考えています。これは、そのための1つの方法です。他の人は、インスタンス変数を目立たせるために常にではthis.instanceVariable
なく使用instanceVariable
し、他の人は「_」文字以外のものを付加し、一部の人は特別な区別を使用するために邪魔をしません。
結局のところ、重要なのは、あなたとあなたのチームの他のメンバーが基準に同意し、それと一致していることです。世界の他の地域が選択することは、あなたに影響を与える必要はありません。
Visual Studioによって生成されたコードスニペットは、ほとんどの場合、チームのコーディング慣行に沿って構成できることにも言及する価値があります。
それほど昔のことではありませんが、C#が市場に登場したとき、ローカル変数の先頭にはプレフィックスを付ける必要があるという概念がありました_
。_
純粋なCでは、システム変数/関数をリードし、メタデータはによってリードされるため、この概念はコミュニティに受け入れられませんでした__
。したがって、数年後、彼らは今ではそれを使用することを思いとどまらせています。しかし、それでも、この表記を使用している信者は、それが狂信的であるためではなく、多くの古いC#アプリケーションにこの規則が含まれているためです。
なぜこれがVisualStudioにあるのですか?
これは、設計された時間ギャップに関連している可能性があります。当時、このアプローチは言語設計者によって提案されました。したがって、最新バージョンの構成では、おそらく誰もそれを変更していません。
それは彼らが使用する単なる慣習であり、私もそうします。最終的には、プライベートフィールドに任意の名前を付けることができます。アンダースコアを前に付けると、IMOが読みやすくなります。
慣例として、プライベートフィールドはアンダースコアと同様に使用されました。例:string _name;
このリンクは、MSによる命名規約のガイドラインに関する詳細情報を提供しますhttp://msdn.microsoft.com/en-us/library/ms229045.aspx
これは単なるC#言語の規則であるため、コンストラクターとフィールド名が同じ場合、コンストラクターではthis.variableの代わりに_varableを使用できます。
http://msdn.microsoft.com/en-us/library/ms229002.aspxにはすべてのc#命名規則があります
生成されたコードの規則に従うと、それはあなたのマザーです。多くのプログラマーが生成されたコードと同じ規則を使用することをお勧めします。コードのリファクタリングに役立つプログラムの中には、フィールド名の命名規則に従うように勧めているものもあります。
最初のアンダースコアは、VSがprivateMemberであることを示す方法です。原則として最初はアンダースコアを使用しますが、使用する命名規則は個人的な好みです。自分自身や自分のコードを見る可能性のある他の人を混乱させないように、1つを選んでそれを使い続けてください。