caferatnica.JP トップへ移動
角尾良太
副管理人 aoちゃん
aoちゃん
contents

SNS etc...

Music
match ADs
2016/10/28 update

naming

私が実践するコーディング命名規則

私が実践している命名規則を紹介します。
ただの名前されど良いコードを書くにはとても重要な事柄です。
ネットで様々なソースコードを読みますが、命名だけでもおおよそではありますがソースコードを書いた方の経験や力量を推し量ることができます。

この命名規則は特にC#で利用するもので、他の言語では多少変わることがあります( たとえばJavaではメンバはCamel形式だったりパッケージは小文字にするなどです )

名前空間

Caferatnica.Applications.Name、Caferatnica.JP.Libraries 等。
まずソフトウェアを配布する元の URL、または制作者の名前またはハンドルネーム、続いて DLL の種類を表す名前( Applications や 共通のライブラリであれば Libraries、Libraries.UI 等 ) をつけ、ファイル名も同じようにします( Caferatnica.Libraries.dll 等 )。
例外として実行ファイルは ApplicationName.exe などというように名前空間を含めないようにします。

クラス

WebBrowser、UserAccount 等。
Pascal形式。

テストクラス

UserAccountTester、CommandTester 等。
Pascal形式。意味合いとしては~をテストする為のクラスということでTesterをつけます。
テストメソッドは TestAccept、TestBinding 等。
こちらも~をテストするという意味合いでTest~としています。
全般的にそうですが、可能な限り読んだとき意味合いに矛盾がないかどうか考えて命名するようにしています。

インターフェイス

ICommand、IOperation 等。
頭にインターフェイスを表す I をつける。Pascal形式。
あまり見ませんし私も利用しないのでおすすめはしませんが、~Interface という命名も文法的に意味もあり良いのではないでしょうか。

抽象クラス

Command、CommandBase 等。

列挙型

BrowserType、WindowShowKind、ProcessingMethod 等。

メソッド

Accept、CreateCommand等。
Pascal形式。個人的なアイデアとしてプライベートなものは createCommand 等の Camel形式
通常、動詞のみや動詞+名詞で構成するのが一般的ではないでしょうか。

プロパティ

UserName、HasItem、IsEmpty 等。
Pascal形式。 個人的なアイデアとしてプライベートなものは hasItem 等の Camel形式

フィールド

_userName、myTextBox 等。
私の場合 Control型から派生したものはデザイナからイベントを生成する際にメソッドの名前になる事から _~ ではなく my~ としています。

引数

anObject、aText、someItems 等。
普通単純に Camel 形式にするところですが、ローカル変数やプロパティの名前とバッティングすることが時折あるので、
私の場合、an、a、some~ としています。
こうすることでソースコード内でローカル変数やプロパティではなく引数であることもわかり一般的ではありませんが特におすすめのパターンです。

ローカル変数

userName、text、items、isProcessing 等。
Camel形式。たとえば FileSystemWatcher というような比較的長い名前を持つものは fsw のように意味を持たない略し方をせず、watcher のようにします。

私の場合、スコープの短いインデックスのような変数でさえも略さず、index のように命名します。
またほとんどの場合、変数は形容詞+型名または型名のような形で表現できます。 たとえば openCommand や settingPanel、redColor 等です。
ただし一部例外もあり文字列、数値などの一般的な型の変数は型名を含めなくても意味合いが通じることから userName、lineNumber、 year などのように型名を含めません。
配列は customers のように複数形にします。