C#コード用のパスカルケーシングまたはキャメルケーシング?
-
02-07-2019 - |
質問
Pascalのケーシング(キャメルケースの上部)と下部の CamelCasing
について同僚と議論していますa>。これらは、SQLデータベースのテーブル名からC#コードのプロパティ命名まで、すべてのラクダケーシングを下げるために使用されますが、Pascalケーシングの方が好きです。string firstName;
public string FirstName {
...
}
しかし、彼らはこれに慣れています:
string _firstname;
public string firstName {
...
}
私は彼らの「標準」に追いつこうとしています。コードは同じように見えますが、私は好きではありません。
少なくとも.NETフレームワークがこの規則を使用していることを見てきました。それが、コードを保持する方法です。例:
System.Console.WriteLine("string")
何を使用/優先しますか?その理由は何ですか?他の誰かがこの質問をしたのに申し訳ありませんが、検索して何も見つかりませんでした。
更新: プロパティではなくメソッドの例を示しましたが、同じです。最初の段落で述べたように、同僚はすべて(変数、メソッド、テーブル名など)にPascalの規則を使用しています
解決
事実上のベストプラクティスであるため、フレームワークが使用するものを使用します。ただし、社内のコードがそのスタイルを使用している限り一貫性のある場合は、慣れることをお勧めします。すべての開発者が独自の標準を持っている場合、標準はまったくありません。
他のヒント
C#ソースコードを確認するには、Microsoftの新しいツール StyleCop をご覧ください。 コンパイル済みのチェックについては、 FxCop にも注意してください。ネットアセンブリ。 FxCopは、レイアウトではなくコードの機能の詳細に重点を置いていますが、公開されている名前に関連するいくつかの命名規則があります。
StyleCopはコーディング標準を定義します。これは現在、Microsoftによって業界標準として推進されています。 C#ソースコードを標準に対してチェックします。 StyleCopは、PascalCaseスタイルに準拠しています。
StyleCop(またはその他の標準)に人々を引き込むのは難しい場合があり、それはかなりのハードルであり、StyleCopは非常に網羅的です。ただし、コードは統一された標準に準拠する必要があります。個人の標準はどれよりも優れており、企業の標準は個人の標準よりも優れており、業界標準が何よりも優れています。
プロジェクトの開始時に人々を説得する方がはるかに簡単です。チームが形成され、変換する既存のコードはありません。また、コードが標準を満たしていない場合、ビルドを中断するためのツール(FxCop、StyleCop)を配置できます。
言語とフレームワークの標準を使用する必要があります-SQLコードはSQL標準を使用し、C#コードはC#標準を使用する必要があります。
パブリックインターフェイスの場合は、MS .NETフレームワークの設計に固執する必要があります ガイドライン:" 大文字と小文字の表記"。
非公開メンバーの場合、あなたと同僚が同意できるものは何でも
私(および私のチーム)は、クラス名の最初の大文字を予約することを好みます。
なぜですか? Java標準が普及していると思います。
から .NET Framework開発者ガイド 大文字と小文字の区別、大文字と小文字の区別:
大文字のガイドラインが存在します 識別子を簡単にするためだけに 読んで認識します。ケーシングはできません 名前を避ける手段として使用 ライブラリ要素間の衝突。
すべてのプログラミングが 言語では大文字と小文字が区別されます。彼らです ありません。名前は大文字と小文字を区別できません 単独。
パスカルケーシングをプロパティに使用する必要があります。可変名に関する限り、一部の人は_を使用し、一部の人はm_を使用し、一部の人は単純に古いラクダケーシングを使用しています。ここで一貫している限り、それは問題ではないと思います。
個人的に嫌いでも、あなたの仕事の場所についてコーディング標準が言っていることを我慢しなければならないでしょう。いつか将来的には、独自のコーディング標準を指示できるようになるでしょう。
個人的には、テーブルとフィールドに" fish_name"、" tank_id"などの形式の名前を使用するデータベースが好きですが、データベースモデルに相当するコードは" fishName"ですおよび「tankID」。私も" _fooname"が嫌いです" fooName"の命名利用可能です。しかし、これは主観的なものであり、過去の経験と教育のために何が良い点と悪い点かについては、異なる人々が異なるアイデアを持っていることを繰り返す必要があります。
実際には、「標準」はありません。これに関する規約。 Microsoftが編集したガイドラインがどこかにあり、他の命名規則のガイドラインと同様に、それを反論する別のガイドラインも確かにありますが、ここに「標準C#の大文字と小文字の規則」として理解するようになったものがあります。
- 型名(クラス、列挙)、定数、およびプロパティのPerWordCaps。
- 非常に長いローカル変数および保護/プライベート変数のキャメルケース
- ALL_CAPSはありません ever (まあ、コンパイラでのみ定義されていますが、コードではありません)
- 一部のシステムクラスはプライベート変数に下線付きの名前(_name)を使用しているようですが、そのほとんどはC ++から直接来ているため、元の作者の背景に由来すると思います。また、VB.NETでは大文字と小文字が区別されないため、クラスを拡張した場合、保護された変数にアクセスすることはできません。
実際には、 FxCop は、これらのルールのいくつかはありますが、(知る限り)ローカル変数に使用するすべてのスペルを無視します。
Aardvark'd プロジェクト仕様に記載されているコーディング規約が好きです
投稿した.NETの例は関数でした。採用された「標準」メソッド/関数の場合は、キャメルケース(または、それを呼び出したい場合はPascal)です。
できる限り、ラクダのケースにこだわります。変数とメソッドの違いを簡単に知ることができます。
さらに、私はローカルクラス変数の前にアンダースコアを付けるのが好きです。例: _localVar
。
プログラミングをやめる日-MicrosoftがC#でCamelCaseを標準として作成する日。私の成長したロジックには、PascalCaseの多くの理由があります。子供のロジックとは異なり、短い名前だけを気にするか、書きやすいです。
そしてBTW:CamelCasingは主に、C ++から継承されたネイティブの古い言語であるC ++ STDライブラリスタイルに由来します。したがって、JavaはC ++から継承されました。しかし、C#-はまったく新しい言語であり、クリーンで美しい、新しいルールがあります。 OldfagsはJavaまたはC ++でプログラミングする必要があり、新世代の人はC#でプログラミングする必要があります。
この例を検討してください: 1)PascalCase:list.Capacity.ToString(); 2)キャメルケース:list.capacity.toString();
(1)では、長期的にCAMEL CASEがあります!!! listCapacityToStringを意味します。 (2)には、でたらめがあります:listcapacitytoString。
それが私の読み方です。そして、CamelCaseがiteltにとって非論理的である理由。 PascalCaseで殺すことができます。触れないでください。どんな年齢の子供でも。
Microsoft-永久に、またはPascalCaseを使用するまで。
あなたが好むものはどれでも重要なことであり、明らかにチームの標準を主に順守しています。 プライベートではコードを自由に指定できますが、変数にsomeVariableまたはSomeVariableという名前を付けたとしても、完成した製品には影響しません。