coding conventions - dsuz/csharp GitHub Wiki
ここではコーディング規約について説明し、例を紹介する。
コーディング規約とは
コーディング規約 (coding conventions, coding guideline) とは、プログラミングの文法上は守らなくても動作するが、人間にとってプログラムを読みやすくするために守る「プログラムの書き方」のルールのことである。
コーディング規約には「どのコーディング規約でも当然守るもの」もあり、そうでないものもあるが、重要なのは「プロジェクト内で一貫していること」「理由があること」である。
コーディング規約を守ることにより、コードの読みやすさは飛躍的に上がるが、一貫していないコーディング規約で書かれたプログラムは、人間にとって理解するのが困難な(読めない)ものになる。
コーディング規約は、プログラミング言語などによって異なる。ここで説明しているのはあくまで「C#」のコーディング規約であり、別のプログラミングを使う時には適用されない。
参考
- C# のコーディング規則(@microsoft.com)
- 名前付けのガイドライン(@microsoft.com)
- C# コーディングガイドライン&プラクティス 2021
- C# CODING GUIDELINES(@qiita)
- リーダブルコード(目次)
Unity 的な規約の例
これは私が使っている例です。基本的なもののみ挙げています。
命名規則
変数・クラス・メソッド等にはその用途・機能を表した名前をつける
クラス名はパスカルケースを使う
変数名はキャメルケースを使う
フィールド名にはプレフィックス _ をつける
以前は Unity Technologies のコーディング規則である m_ プレフィックスをつけていたが、マイクロソフトによる名前付けガイドラインが変更されたため、_ プレフィックスを使うように変えた。
メソッド名はパスカルケースを使う
プロパティ名はパスカルケースを使う
レイアウト規則
演算子の両側には半角スペースを一つ空ける
セミコロン (;) の後に命令が続く時は半角スペースを一つ空ける
カンマ (,) の後は半角スペースを一つ空ける
不必要な改行を入れない
ブロック ({ }) を作る時は、{(波括弧開く)の前に改行を入れる
以下のように、{ の前に改行する。
void Start()
{
...
}
以下の書き方は C/C++/java 等のインデントであるため、C# では使わない。
void Start() {
}
制御構文(if, for, foreach 等)を書く時にブロックを省略しない
制御構文を書く時、もしくはメソッド・プロパティを定義する時に、その前後が { または } でない場合は一行空ける
{
if (x < 0) // if の前後が {, } である時は行を空けない
{
...
}
// ここで一行空ける
int a = 1;
int b = 2;
// ここで一行空ける
if (a > 0)
{
...
}
} // if の前後が {, } である時は行を空けない
ブロックを作る時はインデントを正しく使う
{ からまっすぐ下に下りれば、それに対応する } があるように正しくインデントをレイアウトする。
インデントはスペースではなく Tab 文字で字下げする
コメント規則
クラス定義にドキュメント コメントをつける
クラスがコンポーネントの場合はそのコンポーネントの機能と用途(何にアタッチすることを想定しているのか)をドキュメント コメントとして記述する。
フィールドの宣言時には必要に応じてドキュメント コメントをつける
名前のみでは用途が明確でないフィールドにはドキュメント コメントによって用途を説明する。単に「自分自身が追加されている GameObject に追加されたコンポーネント」への参照を入れておく(キャッシュする)だけの変数にはコメントで説明する必要はない。
Inspector から設定させる変数については、必要に応じて Header もしくは ToolTip 属性をつけて、説明を表示する。
メソッド定義にドキュメント コメントをつける
メソッドには、その機能・目的・使うタイミングを説明したドキュメント コメントをつける。
コーディング規則
マジックナンバー及びリテラルのハードコーディングはしない
マジックナンバーのハードコーディングはしない。メンバ変数にその値の意味を示す名前をつけて値を格納する。必要であれば Inspector から設定できるようにしておく。
パブリック フィールドを宣言しない
カプセル化のコンセプトに則り、フィールドは全て private にする。内部変数を取得・更新したい時はプロパティかメソッドを経由する。
参考
Visual Studio のフォーマット機能・リファクタリング機能を使うことで、規約に沿ったコーディングに簡単に修正できる。