web-dev-qa-db-ja.com

C#コード用のパスカルケーシングまたはキャメルケーシング?

私は同僚とPascalケーシング(上部のラクダケース)対下部 CamelCasing について議論してきました。 SQLデータベースのテーブル名からC#コードのプロパティ命名まで、すべてのキャメルケースを下げるために使用されますが、Pascalケーシングの方が好きです。

string firstName;
public string FirstName {
...
}

しかし、彼らはこれに慣れています:

string _firstname;
public string firstName {
...
}

私は彼らの「標準」に遅れないようにしていますので、コードは同じに見えますが、私はそれが好きではありません。

私は少なくとも.NETフレームワークがこの規則を使用していることを見てきましたが、それが私のコードを維持しようとする方法です、例えば:

System.Console.WriteLine("string")

何を使用/優先しますか?その理由は何ですか?他の誰かがこの質問をしたのに申し訳ありませんが、検索しても何も見つかりませんでした。

更新:プロパティではなくメソッドの例を挙げましたが、同じです。最初の段落で述べたように、私の同僚はすべて(変数、メソッド、テーブル名など)にPascalの規則を使用しています

32
Gustavo Rubio

事実上のベストプラクティスであるため、フレームワークが使用するものを使用します。ただし、会社のコードが一貫してスタイルを使用している限り、それに慣れる方がはるかに良いでしょう。すべての開発者が独自の標準を持っている場合、標準はまったくありません。

33
Greg Hurlman

公式の 設計ガイドライン へのリンクが役立つ場合があります。具体的には、 Capitalization styles のセクションを読んでください。

物事の大まかなスキームでは、Pascal対Camelはそれほど重要ではなく、名前の大文字小文字を変更するためだけに既存のコードベースに戻るように誰かを説得する可能性はありません。本当に重要なのは、特定のコードベース内で一貫性を保ちたいということです。

あなたがハンガリー語を使用していない限り、私はただ幸せです。

37
Joel Coehoorn

C#ソースコードをチェックするためのMicrosoftの新しいツール、 StyleCop をご覧ください。また、コンパイルされた.Netアセンブリをチェックするための FxCop にも注意してください。 FxCopは、レイアウトではなくコードの詳細に重点を置いていますが、公開されている名前に関連するいくつかの命名規則があります。

StyleCopはコーディング標準を定義します。これは現在、Microsoftによって業界標準として推進されています。 C#ソースコードを標準に対してチェックします。 StyleCopは、PascalCaseスタイルに準拠しています。

StyleCop(または他の標準)に人々を引き込むのは難しい場合があり、それはかなりのハードルであり、StyleCopは非常に網羅的です。ただし、コードは統一された標準に準拠する必要があります。個人の標準はどれよりも優れており、企業の標準は個人の標準よりも優れており、業界標準が何よりも優れています。

プロジェクトの開始時に人々を説得する方がはるかに簡単です。チームが形成されており、変換する既存のコードがありません。また、コードが標準を満たしていない場合、ビルドを中断するためのツール(FxCop、StyleCop)を配置できます。

言語とフレームワークの標準を使用する必要があります。SQLコードはSQL標準を使用し、C#コードはC#標準を使用する必要があります。

16
Anthony

パブリックインターフェイスの場合、MS .NETフレームワークの設計ガイドライン「 Capitalization Conventions 」に固執する必要があります。

非公開メンバーの場合、あなたと同僚が同意できるものは何でも。

7
Ian G

私(および私のチーム)は、クラス名の最初の大文字を予約することを好みます。

どうして? Java標準の普及、と思う。

3
Dennis S.

。Netのコーディング標準 を見つけました。

1
Naveen Vijay

.NET Framework開発者ガイドから 大文字の表記規則 、大文字と小文字の区別:

大文字のガイドラインは、識別子を読みやすく認識しやすくするためだけに存在します。ライブラリ要素間の名前の衝突を回避する手段として、ケーシングを使用することはできません。

すべてのプログラミング言語で大文字と小文字が区別されると想定しないでください。ではない。名前は大文字小文字だけで異ならせることはできません。

1
Tom A

プロパティにはパスカルケーシングを使用する必要があります。可変名に関する限り、一部の人は_を使用し、一部の人はm_を使用し、一部の人は単純に古いラクダケーシングを使用します。ここで一貫している限り、それは問題ではないと思います。

0
Charles Graham

あなたが投稿した.NETの例は関数でした。メソッド/関数に採用されている「標準」は、キャメルキャップ付きキャメルケース(または、それを呼び出したい場合はパスカル)です。

私はラクダのケースにこだわることができます。変数とメソッドの違いを簡単に知ることができます。

さらに、私はローカルクラス変数の前にアンダースコアを付けるのが好きです。例:_localVar

0
Oli

個人的に嫌いでも、あなたの仕事の場についてコーディング標準が言っていることを我慢しなければならないと思います。将来、いつかあなた自身のコーディング標準を指示できるようになるでしょう。

個人的には、テーブルとフィールドに「fish_name」、「tank_id」などの形式の名前を使用するデータベースが好きですが、データベースモデルに相当するコードは「fishName」と「tankID」になります。 「fooName」が使用可能な場合、「_ fooname」の命名も嫌いです。しかし、これは主観的なものであり、経験や教育のおかげで、何が良いのか、悪いのかについて、異なる人々が異なる考えを持っていることを繰り返す必要があります。

0
JeeBee

実際、これには「標準」の規則はありません。 Microsoftが編集したガイドラインがどこかにあり、他の命名規則のガイドラインと同様に、それを反論する別のガイドラインも確かにありますが、ここに「標準C#ケーシング規則」として理解するようになったものがあります。

  1. 型名(クラス、列挙型)、定数、プロパティのPerWordCaps。
  2. 本当に長いローカル変数と保護/プライベート変数のキャメルケース
  3. ALL_CAPSなしever(まあ、コンパイラの定義のみで、コードではありません)
  4. 一部のシステムクラスはプライベート変数に下線付きの名前(_name)を使用しているように見えますが、それらのほとんどはC++から直接来ているため、元の作者の背景から来ていると思います。また、VB.NETでは大文字と小文字が区別されないため、クラスを拡張した場合、保護された変数にアクセスすることはできません。

実際、 FxCop はこれらのルールのいくつかを強制しますが、(知る限り)ローカル変数に使用するどんなスペルも無視します。

0
dguaraglia

Aardvark'd プロジェクト仕様でコーディングされた規約が好きです

0
Tanj