
C# コードを形式する正しい方法は 1 つとは限りませんが、チーム全体で一貫したスタイルにすることで、よりクリーンで読みやすく、スケーラブルなコードベースを結果できます。このページでは、独自のスタイルガイドを作成する際に留意すべきクラス、メソッド、およびコメントに関するヒントとキー考慮事項を紹介します。
注:ここで紹介する推奨事項は、Microsoft が提供する推奨事項に基づいています。最適なコードスタイルガイドのルールは、チームのニーズに合ったものです。
コード スタイル ガイドの例はこちらから、または完全なeBook「Use a C# style guide for clean and scalable game code (Unity 6 edition)」をダウンロードしてください。
命名に加えて、フォーマットすることで当て推量を減らし、コードの明瞭性を高めます。標準化されたスタイルガイドに従うことで、コードレビューはコードの見た目ではなく、コードの内容によって変わります。
これらのサンプルルールは、チームのニーズに合わせて省略、拡張、変更することができます。
いずれの場合も、各フォーマットルールをチームでどのように実装するかを検討し、全員に均一に適用させます。意見の食い違いを解決するには、チームのスタイルを見直しましょう。
Unity開発スタイル ガイドを設定する際には、次のコード形式に関する推奨事項をそれぞれ考慮してください。
プロパティは、クラス値の読み取り、書き込み、または計算を行うための柔軟なメカニズムを提供します。プロパティは public メンバー変数のように動作しますが、実際にはアクセサーと呼ばれる特殊なメソッドです。各プロパティには、バッキングフィールドと呼ばれる非公開フィールドにアクセスする get メソッドと set メソッドがあります。
このようにして、プロパティはデータをカプセル化し、ユーザーや外部オブジェクトによる不要な変更からデータを非表示にします。取得メソッドと設定メソッドにはそれぞれ独自のアクセスモディファイア子があり、プロパティを読み書き可能、読み取り専用、または書き込み専用にすることができます。
また、アクセサーを使用してデータの妥当性検査や換算 (例: データが目的の形式に適合するかの確認、特定の単位への値の変更) を行うこともできます。
プロパティの構文は変わる可能性があるため、スタイル ガイドで形式を定義する必要があります。これらのヒントを使用して、コード内でプロパティーの一貫性を保つことができます。
1 行の読み取り専用プロパティには式本体のプロパティを使用する(=>)。これは private バッキングフィールドを返します。
その他はすべて古い {get; set; 構文:バッキングフィールドを指定せずに public プロパティを公開するだけの場合は、自動実装プロパティを使用します。set および get アクセサーに式本体構文を適用します。書き込みアクセスを許可しない場合は、setter を private にしてください。複数行のコードブロックでは、閉じ波かっこと開始波かっこの位置を合わせます。
スクリプト シリアル化は、データ構造やオブジェクトの状態を、後でUnityが保存および再構築できる形式に変換する自動プロセスです。パフォーマンス上の理由から、Unityはシリアル化を他のプログラミング環境とは異なる方法で処理します。
シリアル化されたフィールドは Inspector に表示されますが、静的、定数、または読み取り専用のフィールドはシリアル化できません。public であるか、[SerializeField] 属性でタグ付けされている必要があります。Unity は特定のフィールド タイプのみをシリアル化するため、シリアル化ルールの完全なセットについてはドキュメント ページを参照してください。
シリアライズされたフィールドを扱う際には、いくつかの基本的なガイドラインに従ってください。
別のクラスからこのシリアライズ可能クラスを参照します。結果として得られる変数は、Inspector の折りたたみ可能なユニット内に表示されます。

C# では 2 つの一般的なインデントスタイルがあります。
これらのインデントスタイルにもバリエーションがあります。このガイドの例は、Microsoft Framework Design Guidelines の Allman スタイルを使用しています。どのチームを選択しても、全員が同じインデントと波かっこスタイルに従うようにしてください。
インデントは通常、2 つまたは 4 つのスペースです。タブとスペースの競争に火をつけることなく、チームの全員がエディターの設定について合意できるようにします。Visual Studio には、タブをスペースに換算するオプションがあります。
Visual Studio(Windows)で、[Tools]> [Options]> [Text Editor]> [C#]> [Tabs] を選択します。
Visual Studio for Macで、環境設定><ソースコード>C#ソースコードに移動します。テキストスタイルを選択して設定を調整します。

波かっこは省略しないでください(1 行のステートメントでも)。波かっこを使用すると、一貫性が高まり、コードが読みやすくなり、保守しやすくなります。この例では、波かっこがアクション DoSomething をループから明確に分離しています。
あとでデバッグ行を追加したり、DoSomethingElse を実行する必要がある場合は、波かっこがすでに配置されています。句を別の行にすることで、ブレークポイントを簡単に追加できます。
ネストされた複数行のステートメントから波かっこを削除しない。波かっこを削除してもエラーにはなりませんが、混乱を招く可能性が高いです。任意であっても、わかりやすくするために波かっこを付けます。また、波かっこを使用すると、新しいロジックの追加などの変更を、周囲の構造体をリファクタリングすることなく安全に行うことができます。
フォーマットはさまざまであるため、スタイルガイドでチームの好みを文書化し、適宜switchステートメントを標準化してください。
case ステートメントをインデントする例を 1 つ示します。通常は、デフォルトケースを含めることをお勧めします。デフォルトのケースが必要ない場合 (例えば、すべての可能性が網羅されている場合) でも、ケースを含めることで、予期しない値をハンドルできるようにコードが準備されます。
間隔などの簡単な設定によって、画面上のコードの外観を向上させることができます。書式の設定は好みによって変わりますが、読みやすさを向上させるために以下の提案を試してみてください。
スペースを追加してコード密度を下げる。余分な空白を入れることで、行の各部分が視覚的に分離され、読みやすくなります。
関数の引数の間には、カンマの後にスペースを 1 つ入れる。
括弧と関数の引数の後にスペースを入れないでください。
関数名とかっこの間にはスペースを入れないでください。
角かっこ内にはスペースをできるだけ入れないようにしましょう。
フロー制御条件の前にスペースを 1 つ入れ、フロー比較演算子とかっこの間にスペースを入れます。
比較演算子の前後にスペースを 1 つ入れる。
行は短くしてください。水平空白を考慮する:標準的な行幅(80 ~ 120 文字)を決めます。長い行をオーバーフローさせるのではなく、小さな文に分割する。
インデント/階層を維持する:コードをインデントして、読みやすさを高める。
読みやすくするために必要でない限り、列整列を使用しない:このタイプの間隔は変数を揃えますが、型と名前の組み合わせが難しくなります。
ただし、ビット単位の式や大量のデータを扱う構造体では、列整列が便利です。項目を追加すると、列の整列を維持する作業が増える可能性があることに注意してください。オートフォーマッタによっては、 列のどの部分を揃えるかも変更される可能性があります 。
垂直間隔も必要に応じて使用できます。スクリプトの関連する部分をまとめ、空白行を使用してわかりやすくします。次の提案を試して、コードを最初から最後まで整理してください。
これは最小限に留め、必要に応じてスタイルガイドにメモしてください。
コードでのリージョンの使用
#region ディレクティブを使用すると、C# ファイルのコードセクションを折りたたんだり非表示にしたりできるため、サイズの大きなファイルの管理が容易になります。
ただし、このガイドのクラスに関する一般的なアドバイスに従う場合は、クラスサイズを管理しやすく、#region ディレクティブを過剰に使用するようにしてください。コードブロックをリージョンの後ろに隠す代わりに、コードを小さなクラスに分割します。ソースファイルが短い場合は、リージョンを追加する傾向が少なくなります。
注:多くの開発者は、リージョンをコード臭またはアンチパターンと考えています。ディベートのどちらの側につくかをチームで決めましょう。
これらのフォーマットルールが圧倒しているように見えても、絶望しないでください。最新の IDE なら、設定と適用が効率的です。フォーマット規則のテンプレートを作成し、プロジェクトファイルを一度に換算できます。
スクリプト エディタのフォーマット規則を設定するには:
スクリプト ファイルをスタイル ガイドに準拠する必要がある場合は、いつでも次の手順を実行します。
Windows では、「ツール」>「インポートおよびエクスポート設定」からエディタ設定を共有することもできます。スタイル ガイドのC#コード フォーマットでファイルをエクスポートし、すべてのチーム メンバーにそのファイルをインポートさせます。
Visual Studio では、スタイルガイドに従って簡単に作業を進めることができます。フォーマットはホットキーを使用するのと同じくらい簡単になります。
注意:Visual Studio の設定をインポートおよびエクスポートする代わりに、EditorConfig ファイルを構成できます。こうすることで、異なる IDE 間でフォーマットをより簡単に共有でき、Version Control を使用するメリットも得られます。詳細については、.NET コードスタイルルールのオプションを参照してください。
これはクリーン コードに固有のものではありませんが、Visual StudioでUnityのプログラミング ワークフローをスピードアップする10の方法をご確認ください。これらの生産性向上のヒントを適用すれば、クリーンなコードの形式とリファクタリングがはるかに簡単になります。

Visual Studio コードで .editorconfig ファイルを設定するには、次の手順に従います。
C# の設定例を次に示します。
# 最上位の EditorConfig ファイル
root = true
# Unix スタイルの改行(すべてのファイルの末尾が改行)
[*]
end_of_line = lf
insert_final_newline = true
# 4 スペースインデント
[*.cs]
indent_style = space
indent_size = 4
charset = utf-8
trim_trailing_whitespace = true
# メイクファイルのタブインデント
[Makefile]
indent_style = tab
# JSON ファイル固有の設定
[*.json]
indent_style = space
indent_size = 2
命名規則の詳細については、こちらをご覧いただくか、e ブック全文をご覧ください。詳細なコードスタイルガイド例も探ることができます。