Studio Itachi Unity/C# コーディングポリシー ver1.00

はじめに

このコーディングポリシーは、わたくしZiggyがUnityで使用するC#スクリプトの可読性を高めるために作成したものです。
名前もコーディング規約ではなくてコーディングポリシーとしており、頑張って守っていきましょうという気持ちを込めました。
また、ソロ開発を前提に作っているので、多人数開発でのコード品質の平均化が目的ではありません。
もし参考にされる場合は十分注意してください。

本内容作成時の参考資料
 C# のコーディング規則 / Microsoft
 Create a C# style guide: Write cleaner code that scales / Unity
 リーダブルコードC#: C#で読みやすいコードを書く50の方法 / Amazon
 良いコードを書く技術 ── 読みやすく保守しやすいプログラミング作法 / Amazon

目次
  1. 命名規則
  2. 変数の取り扱い方
  3. 条件判定
  4. コメント
  5. レイアウト
  6. 留意すべき原則
  7. 参考資料

①命名規則

  • 名称は英語をそのまま記載する。名称には型名を含めたり意味のない名称を付けたり、余計な修飾はしない。
  • 名前を付ける際は基本的に以下の表に従う。
    項目記法品詞
    クラス名PascalCase名詞EnemyManager、Save
    メソッド名PascalCase動詞GetDirection、FindTarget
    メンバ変数_PascalCase名詞_MousePoint、_HitPoint
    プライベート変数camelCase名詞bulletCounter、sceneName
  • boolを返すメソッドや変数名は質問文(動詞)を使用する。
    例:IsAttacked、isDead、isWalking
  • 肯定的な名前にして、否定形の名前をつけない。
    例:〇isStopped、×isNotMoved


②変数の取り扱い方

  • 不要なインスタンスは=null;しておく。もしくはusing(){}でくくり、不要なインスタンスを保持しないようにする。
  • Update()内でFind,getComponent,Camera.mainを使わない。Start()やAwake()でインスタンス化して使用する。
  • メンバ変数をインスペクターに出すだけなら、publicにせずに[SerializeField]する。
  • public変数を使うときは基本[System.NonSerialized]する。
  • グローバル変数にのみthis.を頭につける。


③条件判定

  • if文を書く際、条件判定が肯定された際の処理を書く。否定の処理はelse側に書く。
  • 一つのif文に複数の条件判定を書かない。&&で条件をつなぎたい場合はネストにする。
  • ネストが3つ以上重なるならメソッド化する。
  • if文に<,>,==といった比較が入る場合、極力メソッド化する。
  • 比較する時は変数を左にし、定数を右に書く。


④コメント

  • コメントは対処の処理の上に書く。コード行の末尾には書かない。
  • メソッドのコメントは//<summary></summary>の中に書く。
    ※メソッド名マウスオーバーでコメントが出る。
  • たくさんコメントが必要な場合、複雑な処理なのでメソッド化する。
  • 未実装部分や後でやることは//TODO:に書く。
    ※VisualStudioのタスク一覧から見れる。


⑤レイアウト

  • 1 つの行には 1 つのステートメントのみを記述する。
  • 1 つの行には 1 つの宣言のみを記述する。
  • 中かっこである { や } は、それぞれ次の行に書き、省略しない。


⑥留意すべき原則

  • 簡潔にしておけ、この間抜け!
    →KISSの原則【Keep it simple, stupid.】
  • そんな機能は必要ないって
    →YAGNIの原則【You Aren't Gonna to Need It.】
  • 情報が重複して書かれてはいけない
    →DRY原則【Don't Repeat Yourself】
  • 一つのクラスには、一つの機能のみ持たせる
    →単一責任の原則(SOLIDの原則より)


⑦参考資料

  • クラスの命名時によく使う単語
    単語意味
    Manager管理者 (管理するだけ)
    Director監督者 (指示だししたりする)
    Generator生成プログラム
    Controller制御装置
  • メソッドや変数の命名時によく使う単語
    単語反対語単語反対語
    addremoveupdown
    insertdeleteshowhide
    getsetopenclose
    startstopsourcedestination
    beginendincrementdecrement
    sendreceivelockunlock
    firstlastoldnew
    putgetnextprevious

以上。
改訂履歴
2023/1/12 作成

TOP