読者です 読者をやめる 読者になる 読者になる

Unityな日々(Unity Geek)

Unityで可視化アプリを開発するための試行錯誤の覚書

C# (.NET Framework)の名前の付け方

UnityでC#のコードを作成するとき、変数やメソッドなどの名前の付け方に迷うことが多々ある。「何が正しいか」は一意に決められないとは思うが、基本的には本家Microsoftの考える「名前の付け方ガイドライン」に従うのがいい。そうすれば、他のメンバーや、社外の人がコードを見た際にも混乱がすくなくてすむ。(作成者自身も、将来、どんな意図でコーディングしたかを忘れるものだから。)

ということで、MSDNガイドラインから、Unity/C#開発に関係が深そうなものを抜粋した。

参考:

.NET Framework-Development Guide-Framework Design Guidelines

Naming Guidelines(英語).aspx)

(日本語の.NET Frameworkのデザインガイドライン:名前付けのガイドライン.aspx)もあるが、翻訳がおかしい箇所が多い)

大文字・小文字の使い分け

  • 変数はCamel形式

  • その他はPascal形式

名前の付け方の一般論

  • わかりやすさを重視
    • 単語の順番は英語と同じに ×AlignmentHorizontal  〇HorizontalAlignment
    • 一般的な単語を使う ×ScrollableX  〇CanScrollHorizontally ('X'が何を示しているか不明瞭)
    • 省略形を使用しない ×OnBtnClk  〇OnButtonClick
    • できるだけ意味を特定する ×GetInt  〇GetLength
  • 英数字以外の文字は使用しない('_‘アンダースコア、’-‘ハイフンなども使用しない)
  • 言語のキーワードを使用しない 

名前空間

<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
  • Pascal記法を用い、単語を'.‘でつなぐ -ただしブランド名固有の大文字・小文字の使い方がある場合はそれを優先してよい
  • Company:会社名をプレフィクスとして用いる
  • Product|Technology バージョンに依存しない安定した製品名・技術名
  • 名前空間と同じ名前をクラスの中で使用しない

メソッド

  • Pascal表記
  • 動詞または動詞句を使う

例:

public class String {  
    public int CompareTo(...);  
    public string[] Split(...);  
    public string Trim();  
}  

プロパティ

  • Pascal表記
  • 名詞または形容詞を使う
    • プロパティ名に'Get|Set'はつけないこと(メソッドと混乱するため)
  • コレクションの場合は複数形にする(—List, —Collectionなどと書かない)
  • Booleanの場合は、否定形ではなく肯定形のみ使用する ×CantSeek 〇CanSeek
    • 先頭に'Is', ‘Has’, ‘Can'をつけてもよい。ただし意味がある場合のみ。

イベント

  • Pascal表記
  • 動詞または動詞句を使う 例:Clilcked, DroppedDown, Painting
  • イベントの前後を示すのに、'Before|After'接頭句はつけない。動詞の過去形、現在形で表現する。
  • イベントハンドラは、「イベント名+EventHandler」とする。 
  • イベントハンドラの中では、イベント送信者は'sender'、イベントは'e'で表記する 例:public delegate void ClickedEventHandler(object sender, ClickedEventArgs e);
  • イベント引数のクラスは、'—EventArgs'接尾句をつける

変数

  • Camel表記
  • 変数の型ではなく、変数の意味で名前をつける。

より上位の「C#コーディング規則」については次を参照のこと。 C# のコーディング規則 (C# プログラミング ガイド)