2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

私のコーディング規約

Last updated at Posted at 2025-04-06

変数

命名規則

ローワーキャメルケース : ローカル変数、private変数
アッパーキャメルケース : public変数、プロパティ(C#)、SerializeField(UnityC#)
スネークケース : enum変数
コンスタントケース : 定数

プリフィックス

s_??? : 静的変数名
p_??? : ポインタ変数名
r_??? : 参照型変数名
m_??? : メンバ変数名
ms_?? : 静的メンバ変数名
mp_?? : ポインタメンバ変数名

  • 略語はすべて大文字
  • bool型はisから始める(is接頭語)
  • 配列やコンテナクラスは後ろにs/esをつける(s接尾語)

その他

  • メンバ変数の後は必ず改行
  • private変数はprivateの記入禁止(C#)
  • SerializeField変数はコメントではなく、Headerを使う(UnityC#)
  • ローカル変数はすべて型推論(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や型に応じた初期化値を戻り値とする
expression-bodied.cs
/**
* 以下、C#の関数のコーディング規約.
*/

// 1行で記述可能であれば、=>で実装する.
string Hoge()
    => "hoge";

コメント

  • メンバ変数や関数にはXMLコメント
  • 処理中は // で
  • 末尾には必ず.(ピリオド)を記述する

コメントフォーマット(C/C++)

ファイルの一番上に以下を絶対に記述すること

CommentFormat.cpp
/**
* 以下、C/C++(Doxygen)のコーディング規約.
*/

/**
* @file CommentFormat.cpp
* 
* @brief ファイルやクラスの概要
* 
* @date 作成日
*
* @author 作成者(チーム開発のみ)
*/

アノテーションコメント

AnnotationComment.c
/**
* 以下、アノテーションコメントのコーディング規約.
*/

// TODO:
// タスク事項を記述する

// TEMPORARY
// デバッグ等で、一時的な変数や関数を作成した場合に上の1行を追加する

// NOTE:
// 補足情報や注意事項を記述する

改行

メンバ変数、プロパティと中括弧の直後には改行

Github

コミット時

コメントの前に、以下の5つの内どれかを必ず記述すること

  • Update : 新しい機能を追加する場合
  • Improve : 機能・コードの改善を行った場合
  • Style : インデントなど、機能に関係しない変更を行った場合
  • Adjust : 細かな調整を行った場合(SerializeField上での値変更など)
  • Fix : バグを修正した場合

プルリクエスト時

  1. 題名には、大まかに何を行ったかを明記する
  2. コメントは何のファイルにどのような変更/追加を行ったかを明記する

その他

C/C++、C#ファイルはUTF-8(BOM付き)にすること
(Github上での文字化け防止)

2
4
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?