web-dev-qa-db-ja.com

誰かが私にC#のコーディング規約を説明できますか?

私は最近Unity3Dを使い始め、主にC#でスクリプトを作成しました。私は通常Javaでプログラミングしているので、その違いはそれほど大きくありませんが、私は クラッシュコースと呼ばれます 正しい方向にいることを確認するだけです。

ただし、C#の最大の好奇心は、メソッド名の最初の文字を大文字にすることです(例:Java:getPrime() C#:GetPrime() aka:Pascal Case?)。これには正当な理由がありますか?クラッシュコースのページから、.Netの規則であることが明らかであり、これを変更する方法がないことを理解しましたが、通常の(相対的な)キャメルケースではなく、なぜこのように行われたのか知りたいです。つまり、Javaが使用します。

注:言語には独自のコーディング規則があることを理解しています(Pythonメソッドはすべて小文字で、この質問にも適用されます)。しかし、なぜ標準化されていないのか、本当に理解していません。

14
ahodder

命名規則は、発行元の任意の選択を表しています。言語自体には、Javaのようにメソッドに名前を付けることを禁止するものは何もありません。最初の文字が文字/アンダースコアであり、他のすべての文字が文字、数字、またはアンダースコアである限り、C#は文句を言う。ただし、.NETに付属するクラスライブラリは、Microsoftが内部で採用した規則に従っています。 Microsoftも これらのガイドラインを公開 なので、他のユーザーも独自のクラスライブラリにそれらを採用することを選択できます。 Microsoftのガイドラインに従うか無視するかはあなたの選択ですが、同じ命名ガイドラインに従うと、他の人がコードをよく理解できるようになります。

27
dasblinkenlight

おそらくPascal/Delphiの影響によるものでしょう。 C#とDelphiの作成者は結局同じ人物でした(Anders Hejlsberg)。

Delphiのコーディング規約は、一般的に、この点ではC#と同じです。 http://www.econos.de/delphi/cs.html#ObjectPascal_Procedures または http://wiki.delphi-jedi.org/index.php?title=Style_Guide#を参照してください。 Method_Naming -偶然?

23
Konrad Morawski

作成された他の回答に加えて、メソッドにキャメルケースがあることは、プライベートメンバーの名前、パラメーター、および名前にキャメルケースを使用するメソッド変数と競合する可能性があることを意味します。 Java(およびC#1.0)では、デリゲートの使用は厄介で珍しいため、これはひどく一般的ではありません。最近のC#では正確にはcommonではありませんが、前例もありません-の。

4
Telastyn