命名規約
1.英語と日本語
全ての識別子の名前は英語を用いること。
全ての識別子の名前は英語を用いること。
2.名前空間
企業略式名.組織略式名.テクノロジー名.機能名を使用する。また、テクノロジー名にはソリューションが、機能名にはプロジェクトが対応していること。
using Project5j.Bomberman...
企業略式名.組織略式名.テクノロジー名.機能名を使用する。また、テクノロジー名にはソリューションが、機能名にはプロジェクトが対応していること。
using Project5j.Bomberman...
3.クラス名
単語ごとに先頭大文字。
例:class PascalCasing
単語ごとに先頭大文字。
例:class PascalCasing
4.例外クラス名
最後をExceptionとしたクラス名。
例:class ClassNameEndsWithException
最後をExceptionとしたクラス名。
例:class ClassNameEndsWithException
5.インターフェイス名
クラス名に同じ。また常に最初にIを付ける。
例:interface INameOfInterface
また、クラスにある能力を加える様な利用の場合、その能力を示す形容詞とし、-ableを接尾にする。
例: IEnumerable, ICloneable, IXmlSerializable, …
クラス名に同じ。また常に最初にIを付ける。
例:interface INameOfInterface
また、クラスにある能力を加える様な利用の場合、その能力を示す形容詞とし、-ableを接尾にする。
例: IEnumerable, ICloneable, IXmlSerializable, …
6.抽象クラス名
抽象クラス名に適当な名前が無いとき、 Abstract から始まりサブクラス名を連想させる名前を付ける。
例:abstract class AbstractBeforeSubClassName
抽象クラス名に適当な名前が無いとき、 Abstract から始まりサブクラス名を連想させる名前を付ける。
例:abstract class AbstractBeforeSubClassName
7.非パブリックメンバ
先頭に"_"を付加する。
単語の先頭は小文字。それ以降、単語ごとに先頭大文字
例:private object _objectName;
先頭に"_"を付加する。
単語の先頭は小文字。それ以降、単語ごとに先頭大文字
例:private object _objectName;
8.パブリックメンバ
単語ごとに先頭大文字。
例:public object ObjectName;
単語ごとに先頭大文字。
例:public object ObjectName;
9.定数(const)
大文字もしくは大文字を"_"でつないだもの。
例:const int UPPERCASE = 0;
const int UPPERCASE_WITH_UNDERSCORES = 0;
大文字もしくは大文字を"_"でつないだもの。
例:const int UPPERCASE = 0;
const int UPPERCASE_WITH_UNDERSCORES = 0;
10.列挙型(enum)
単語ごとに先頭大文字。
例:enum PascalCasing
単語ごとに先頭大文字。
例:enum PascalCasing
11.列挙値
単語ごとに先頭大文字。
例:PascalCasing
単語ごとに先頭大文字。
例:PascalCasing
12.イベント名
単語ごとに先頭大文字。
例:event PascalCasingEvent()
単語ごとに先頭大文字。
例:event PascalCasingEvent()
13.デリゲート名
単語ごとに先頭大文字。変数名の末尾にHandlerを付加する。
どのような場合に呼び出されるか変数名を見てわかる名前をつけること。
悪い例:public delegate void StateHandler();
public delegate void TimeOutHandler();
単語ごとに先頭大文字。変数名の末尾にHandlerを付加する。
どのような場合に呼び出されるか変数名を見てわかる名前をつけること。
悪い例:public delegate void StateHandler();
public delegate void TimeOutHandler();
良い例:public delegate void StateChangedHandler();
public delegate void ThreadTimeOutHandler();
public delegate void ThreadTimeOutHandler();
14.メソッド名
単語ごとに先頭大文字。
例:void PascalCasing();
object PascalCasing();
単語ごとに先頭大文字。
例:void PascalCasing();
object PascalCasing();
15.ファクトリメソッド(オブジェクトをnewするもの)
createの後に先頭が小文字で始まるオブジェクト名を付加する。
例:ObjectName createObjectName();
createの後に先頭が小文字で始まるオブジェクト名を付加する。
例:ObjectName createObjectName();
16.コンバータメソッド(オブジェクトを別のオブジェクトに変換するもの)
to, fromの後に先頭が小文字で始まるオブジェクト名を付加する。
例:void toObjectName();
ObjectName fromObjectName(object obj1);
to, fromの後に先頭が小文字で始まるオブジェクト名を付加する。
例:void toObjectName();
ObjectName fromObjectName(object obj1);
17.プロパティ名
単語ごとに先頭大文字。
例:object PascalCasing {
}
単語ごとに先頭大文字。
例:object PascalCasing {
}
18.Boolean変数を返すメソッド
Is + 形容詞、Can + 動詞、Has + 過去分詞、三単元動詞、三単元動詞 + 名詞。
良い例:bool IsEmpty()
bool CanGet()
bool HasChanged()
bool Contains(object x)
bool ContainsKey(string key)
Is + 形容詞、Can + 動詞、Has + 過去分詞、三単元動詞、三単元動詞 + 名詞。
良い例:bool IsEmpty()
bool CanGet()
bool HasChanged()
bool Contains(object x)
bool ContainsKey(string key)
悪い例:bool Empty() //「空にする」という動詞的な意味に取れる。
bool CheckXXX() // trueがどちらの意味か分かりづらい。
理由 :if, while文等の条件が読みやすくなる。
またtrueがどちらの意味か分かりやすい。
bool CheckXXX() // trueがどちらの意味か分かりづらい。
理由 :if, while文等の条件が読みやすくなる。
またtrueがどちらの意味か分かりやすい。
19.bool変数
形容詞、is + 形容詞、can + 動詞、has + 過去分詞、三単元動詞、三単元動詞 + 名詞。
例:bool _isEmpty;
bool _dirty;
bool _containsMoreElements;
形容詞、is + 形容詞、can + 動詞、has + 過去分詞、三単元動詞、三単元動詞 + 名詞。
例:bool _isEmpty;
bool _dirty;
bool _containsMoreElements;
20.名前の対称性
クラス名、メソッド名を付ける際は、以下の英語の対称性に気を付ける。
Add / Remove
Insert / Delete
Get / Set
Start / Stop
Begin / End
Send / Receive
First / Last
Push / Pop
Up / Down
Upper / Bottom
Show / Hide
Source / Target
Open / Close
Source / Destination
Increment / Decrement
Lock / Unlock
Old / New
Next / Previous
クラス名、メソッド名を付ける際は、以下の英語の対称性に気を付ける。
Add / Remove
Insert / Delete
Get / Set
Start / Stop
Begin / End
Send / Receive
First / Last
Push / Pop
Up / Down
Upper / Bottom
Show / Hide
Source / Target
Open / Close
Source / Destination
Increment / Decrement
Lock / Unlock
Old / New
Next / Previous
21.ループカウンタ
スコープ(通用範囲)が狭いループカウンタには i, j, k という名前をこの順に使う。
スコープ(通用範囲)が狭いループカウンタには i, j, k という名前をこの順に使う。
22.スコープが狭い名前
スコープが狭い変数名は,型名を略したものを使って良い。
例: DataSet ds = new DataSet();
スコープが狭い変数名は,型名を略したものを使って良い。
例: DataSet ds = new DataSet();
23.意味がとれる名前
変数名から役割が読み取れる名前をできる限り指定すること。
悪い例:Copy(string s1, string s2)
変数名から役割が読み取れる名前をできる限り指定すること。
悪い例:Copy(string s1, string s2)
良い例:Copy(string source, string destination)