変数
命名規則
ローワーキャメルケース : ローカル変数、private変数
アッパーキャメルケース : 構造体名、public変数、プロパティ(C#)、SerializeField(UnityC#)
ローワースネークケース : enum変数
- 略語はすべて大文字
- bool型はisから始める(is接頭語)
- 定数はコンスタントケース
- 配列やコンテナクラスは後ろにs/esをつける(s接尾語)
その他
- メンバ変数の後は必ず改行
- private変数はprivateの記入禁止(C#)
- ローカル変数はすべて型推論(C++はauto、C#はvar)を使う
- また、明示的に型を定義する必要がある場合は、コメントを追記し、使用する
property.cs
/**
* 以下、プロパティのコーディング規約.
*/
// getterのみ.
public int GetHoge { get; private set; } = 0;
int hoge;
// setter込み(単一行).
public int Hoge
{
get => hoge;
set => hoge = value;
}
// setter込み(複数行).
public int Hoge
{
get
{
// 処理.
return hoge;
}
set
{
hoge = value;
// 処理.
}
}
四則演算
演算子の両隣はそれぞれ半角スペース1つ(隣が括弧の場合は適用外)
if文
if.c
/**
* 以下、if文のコーディング規約.
*/
if(hoge)
{
// 処理.
}
else if(!fuga)
{
// 処理.
}
else
{
// 処理.
}
while文
while.c
/**
* 以下、while文のコーディング規約.
*/
// C/C++
while(1)
{
// ループ終了用の条件式を明記.
if(hoge)
{
break;
}
// 処理.
}
// C#
while(true)
{
// ループ終了用の条件式を明記.
if(hoge)
{
break;
}
// 処理.
}
for/foreach文
for.cpp
/**
* 以下、C/C++のfor/foreach文のコーディング規約.
*/
// C
for (int i = 0; i < 10; ++i)
{
// 処理.
}
// C++
for (auto i = 0; i < 10; ++i)
{
// 処理.
}
for (auto i : values)
{
// 処理.
}
for.cs
/**
* 以下、C#のfor/foreach文のコーディング規約.
*/
// C#
for (var i = 0; i < 10; ++i)
{
// 処理.
}
foreach (var i in values)
{
// 処理.
}
enum
命名規則
コンスタントケース
その他
最後にNONEという列挙定数を宣言すること
switch文
switch.c
/**
* 以下、switch文のコーディング規約.
*/
switch(hoge)
{
default: // 書き忘れ防止.
break;
case 1:
break;
case 2:
break;
}
関数
命名規則
- 関数名はアッパーキャメルケース
- 関数名は動詞から始める
- 引数名は_(アンダーバー)から始める(_(アンダーバー)接頭語)
-
- UnityのOnClickやInputSystemで呼び出される関数は、Onから始める(On接頭語)
- await/asyncを使用する関数は、後ろにAsyncをつける(Async接尾語)
- UniRxやR3などのRxを使用する関数は、後ろにAsObservableをつける(AsObservable接尾語)
- 成功した場合にのみ、何かを行う関数はTryから始める(Try接頭語)
- 成功した場合にのみ、取得できる関数はTryGetから始める(TryGet接頭語)
その他
- private関数はprivateの記入禁止(C#)
- Unityのイベント関数にはアクセス修飾は禁止(UnityC#)
- Tryが接頭語になる関数は、trueや値 or falseや型に応じた初期化値を戻り値とする
Arrow.cs
/**
* 以下、関数のコーディング規約.
*/
// 1行で記述可能であれば、=>で実装する.
string Hoge()
=> "hoge";
コメント
- メンバ変数や関数にはXMLコメント
- 処理中は // で
- 末尾には必ず.(ピリオド)を記述する
改行
メンバ変数、プロパティと中括弧の直後には改行
Github
コミット時
コメントの前に、以下の3つの内どれかを必ず記述すること
- Update : 新しいファイルを追加する場合
- Improve : 機能・コードの改善を行った場合
- Style : インデントなど、機能に関係しない変更を行った場合
- Adjust : 細かな調整を行った場合(SerializeField上での値変更など)
- Fix : バグを修正した場合
プルリクエスト時
- 題名には、大まかに何を行ったかを明記する
- コメントは何のファイルにどのような変更/追加を行ったかを明記する
その他
C/C++、C#ファイルはUTF-8(BOM付き)にすること
(Github上での文字化け防止)