C#の変数や型(クラス、構造体、インターフェース、列挙型など)、メンバー(フィールド、メソッド、イベントなど)、名前空間といったものにプログラマが名前を付けて管理します。このように、名前を割り当てたものを識別子と呼びますが、名前の付け方にはルールがあります。
命名規約
識別子は以下の規則に従って命名する必要があります。
- 使える文字はアルファベット・アンダースコア「_」・数値(かなや漢字も可)
- 名前の先頭を数値にする事はできない
- C#のキーワードとして予約された単語は使用できない
※アルファベットの大文字・小文字は区別されます(abc と Abc は別々の物)
参考:https://learn.microsoft.com/ja-jp/dotnet/csharp/fundamentals/coding-style/identifier-names
命名ガイドライン
命名規約に従って名前をつければプログラム的には問題ありません。
しかし、好き勝手に適藤な名前を付けると大変分かりづらいソースコードとなってしまいます。
また、チームで開発する場合など、書いた人によって名前の付け方が違うと混乱しバグの原因となることも多いでしょう。
.NET APIは一定のガイドラインに沿って名前付けがされているため、このガイドラインに従ってコードを書くことをお勧めします。
表記方法
名前付けに使用する単語の表記方法には、大きくわけて2つの方法があります。
表記方法 |
概要 | 例 |
Pascal形式 |
各単語の最初の文字を大文字にしそれ以外は小文字 IDのような2文字の省略形は全て大文字 XMLのような3文字以上の省略形は先頭だけ大文字 |
BackColor DBRate XmlWriter |
camel形式 |
先頭の単語は全て小文字 それ以外はPascal形式と同じ 先頭がIDやXMLのような省略形であっても小文字 |
backColor dbRate xmlWriter |
プリフィックス
プリフィックスは、先頭に特定の意味を持たせた単語を付けるというものです。
たとえば、インターフェースの名前には必ず先頭に「I」を付けるというようなルールを持たことがあります。
識別子の種類による表記方法の使い分け
.NET APIでは識別子の種類によって以下のようなガイドラインが定められています。
識別子の種類 |
表記方法 | 概要 |
名前空間 | Pascal形式 |
[企業名].[製品名].[特徴]のように構成要素をピリオド . で区切る 例)Microsoft.WindowsMobile.DirectX
|
クラス |
Pascal形式
|
名詞、名詞句、場合によって形容詞句 プリフィックスは使用しない
|
構造体 | Pascal形式 |
名詞、名詞句、場合によって形容詞句 プリフィックスは使用しない |
インターフェース | Pascal形式 |
名詞、名詞句、場合によって形容詞句 プリフィックスに I を使用 |
列挙型 | Pascal形式 |
値がビット フィールドでない限り単数の型名を使用 値としてビット フィールドを持つ場合には複数形の型名を使用 プリフィックスは使用しない |
列挙値 | Pascal形式 | プリフィックスは使用しない |
メソッド | Pascal形式 |
動詞、動詞句 プリフィックスは使用しない |
フィールド | Pascal形式 |
名詞、名詞句 プリフィックスは使用しない |
プロパティ | Pascal形式 |
名詞、名詞句、形容詞 "List" や "Collection" が続く単数形の語句ではなく複数形の語句を使用
ブール値は肯定の語句 (CantSeek ではなく CanSeek) を使用 |
イベント | Pascal形式 |
動詞、動詞句 現在形や過去形を使って、イベント名に前と後の概念を指定 例)ウィンドウを閉じる前に発生するイベントは Closing 、閉じた後は Closed イベント ハンドラーに "EventHandler" サフィックスを使って名前
例)public delegate void ClickedEventHandler(object sender, ClickedEventArgs e); |
パラメータ | camel形式 |
名前と型を見ただけで使用方法が判断できるような名前 |
コメントをお書きください