|
|
|
|
|
|
MFC, Win32 の超気もちわりぃコーディングコンベンションを使わないですむだけでうれしくなってしまう。 C# Naming Guidelines が出ているのでまとめておきます。
|
|
|
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconnamingguidelines.asp |
|
|
次のようなネーミング形式が出てきます。
Pascal 形式 (Pascal case) | 説明 |
| MyClass | 各単語の最初の文字を大文字にする。 3 文字以上から構成される識別子に対して適用する。 |
Camel 形式 (Camel
case) | 説明 |
| myParameter | 最初の単語は小文字。それに続く各単語の最初の文字を大文字にする。 Camelback Coding Convention ( xxxXxxxXxxx ← らくだのこぶ?) |
大文字形式 (Uppercase) | 説明 |
System.IO | 識別子のすべての文字を大文字にする。 2文字以下で構成される識別子にだけ使用する。 |
|
|
|
class MyClass class MYCLASS
MyMethod(string str, string Str)
System.Windows.Forms.Point p System.Windows.Forms.POINT p
などの大文字と小文字を区別した書き方をしない。 |
|
|
Ptr →Pointer WndProc → WindowProcedure CurSel → CurrentSelection
|
|
|
非常に暗号性の高いハンガリー記法は使用しない。ばんざ〜〜〜い! くされハンガリー記法よ、さようなら!
|
|
|
プログラミング言語に依存した型名を名前に使わない。 たとえば、C# の int は、VB では Integerなので、次のように引数にプログラミング言語に依存したパラメータ名を使用しない。
void Write(int intValue); →void Write(int value);
|
たまに、このような型名を必要とする場合が出てくるが、その場合は言語に依存した名前ではなく、汎用型名(Universal
type name)を使用する。
例 int ReadInt(); →int ReadInt32();
|
|
|
CompanyName.TechnologyName[.Feature][.Design] というパターン。
例: Uchukamen.MultiMedia.Movie.Viewer
|
.NET Framework 名前空間で使用されている名前は使わない。 Class Console →だめ。
|
意味的に適切な場合は、複数形の名前空間名を使用する。 例: Collections 例外: 省略形 System.IOs 誤 → System.IO 正。
|
名前空間とクラスに同じ名前を使用しない。
namespace MySystem;
class MySystem; // 誤り。名前空間とクラスに同じ名前を使用しない。 ....
|
|
|
Pascal 形式。 例 MyClass
|
クラスを表す C などの型プリフィックスは使用しない。CMyClass → MyClass
|
|
|
プリフィックス I を付ける。例 IClassFactory
|
名詞または名詞句、あるいは動作を説明する形容詞
|
アンダースコアは使用しない。
|
|
|
必ずサフィックス Attribute を追加する。
|
|
|
Pascal 形式。 例
|
Enum サフィックスを付けない。
|
単数形の名前を使用する。ビット フィールドは複数形の名前を使用する。
|
Enum 型のビット フィールドには常に FlagsAttribute を追加する。
|
|
|
Pascal 形式。 例 static SzText
|
名詞または名詞句、あるいは名詞の省略形を使用する。
|
静的フィールド名には、ハンガリー表記法を使用したプリフィックスをつける。
|
可能な限りスタティックフィールドではなく、スタティックプロパティを使用する。
|
|
|
Camel 形式。 例 string Format(string
shortFormat, int decmalValue);
|
その名前と型を見ただけで、意味を判断できるくらいわかりやすい名前にする。
|
パラメータの型を説明する名前ではなく、パラメータの意味を説明する名前を使用する。
Visual Studio.NET
では、パラメータの型の情報が表示されるので、そのパラメータの意味を説明した方がよい。
|
ハンガリー表記法は使用しない。
|
|
|
Pascal 形式。 例 GetValue()
|
動詞または動詞句を使う。
|
|
|
Pascal 形式。 例 MyProperty
|
名詞または名詞句を使う。
|
基になる型と同じ名前でプロパティを作成する。
|
ハンガリー表記法は使用しない。
|
|
|
イベントハンドラ名にはEventHandler サフィックスを付ける。
|
sender および e という名前の 2 つのパラメータを指定する。
|
イベント引数クラスの名前には、EventArgs サフィックスを付ける。
|
イベントの名前には、動詞を使用する。
|
イベント発生前の概念を表すイベント名を作成するときは、動名詞 (動詞の "ing" 形) を使用する。 例
Closing イベント発生後の概念を表すイベント名を作成するときは、動詞の過去形を使用する。 例 Closed
|
イベントの宣言にはプリフィックスやサフィックスを使用しない。例: OnClose → Close を使用する。
|
一般に、派生クラスでは、OnXxx という名前のプロテクト メソッドを用意する。 このメソッドには、常に sender がその型のインスタンスになるため、イベント パラメータe だけを渡す。
|