Csharp Coding Guidelinesの和訳をしました
元のサイトはこちら
Csharp Coding Guidelines
波括弧
{は常に中身を書く前の行の初めから書く。波括弧の中身は4文字tab
if (someExpression)
{
DoSomething();
}
else
{
DoSomethingElse();
}
switch文のcaseはインテンドする
switch (someExpression)
{
case 0:
DoSomething();
break;
case 1:
DoSomethingElse();
break;
case 2:
{
int n = 1;
DoAnotherThing(n);
}
break;
}
波括弧は常に書く。たとえ処理が一行の文章でも可読性と保守性を高めるために書く必要がある
for (int i = 0; i < 100; i++) { DoSomething(i); }
Single line statements
一行の処理は同じ行の最初と最後に波括弧をつける
public class Foo
{
int bar;
public int Bar
{
get { return bar; }
set { bar = value; }
}
}
コメント
コメントはコードの意図やアルゴリズムの説明、論理和などのロジカルの説明に使う。コメントを読めば他の人が関数の意図する振る舞いを理解し、使えるようにする必要がある。コメントが必要ないほどの短いルーチンもあるが、ほぼ全てのルーチンにプログラマの意図を伝えるためにコメントが追加されるべきである。
コメントのスタイル
//を使うべき。コードの横ではなく、上にコメントを書く。
// This is required for Controller access for hit detection
FPSController controller = hit.GetComponent<FPSController>();
// Create a new ray against the ground
Ray ray = new Ray(hit.transform.position, -Vector3.up);
スペースが許すときはコードの横に書いてもいい。
public class SomethingUseful
{
private int itemHash; // instance member
private static bool hasDoneSomething; // static member
スペース
スペースはコードの可読性を向上させ、コードの密度を下げる。
関数の引数の,(コンマ)の後は一つスペースを空ける
良い例
Console.In.Read(myChar, 0, 1);
悪い例
Console.In.Read(myChar,0,1);
関数の括弧の後や、引数の後にはスペースを使わない
良い例
CreateFoo(myChar, 0, 1)
悪い例
CreateFoo( myChar, 0, 1 )
関数名と括弧の間にはスペースを入れない
良い例
CreateFoo();
悪い例
CreateFoo ();
[]の中ではスペースは使わない
良い例
x = dataArray[index];
悪い例
x = dataArray[ index ];
条件文の括弧の前にスペースを一つ入れる
良い例
while (x == y)
悪い例
while(x == y)
比較演算子の前後にスペースを入れる
良い例
if (x == y)
悪い例
if (x==y)
##命名規則
- ハンガリアン記法は使わない
- 接頭語(_, m_, s_, etc)は使わない
- ローカルとメンバ変数を判断するときは"this"を使う
- メンバ変数にはキャメルケースを使う(e.g myData)
- パラメータにはキャメルケースを使う
- ローカル変数にはキャメルケースを使う
- 関数、プロパティ、イベント、クラス名にはパスカルケースを使う(e.g MyData)
- インタフェースの名前は"I"から始める
- enums, classes, delegatesの先頭は文字で修飾しない
ファイル
- ソースファイルは一つのpublicタイプのみを持つ。ただし、複数のインナークラスは許される。
- ソースファイルはそのpublicなクラス名によって命名される
- クラスのメンバはアルファベット順、ソースコード内はセクションに分けて順番に書く(
フィールド、
コンストラクタ、
プロパティ、
イベント、
メソッド、
privateインタフェースの実装、
ネストのタイプ)
例
using System;
using UnityEngine;
public class MyClass : MonoBehaviour
{
// フィールド
int foo;
// プロパティ
public int Foo { get {...} set { ... } }
// メソッド
void MyMethod(int number)
{
int value = number + 2;
Debug.Log(value);
}
}