C#コーディングルール

C#コーディングルール_#28_コンストラクタやプロパティの書く順番

今回は,クラス内に書く,コンストラクタやプロパティなどの,書く順番に関するルールを解説していきます。この警告のおかげで,決められた順序で書かないと警告になるので,チーム全体が同じ順番で記述することができます。

SA1201

例えば次のように,メソッドより後に,プロパティを記述してみてください。

すると,SA1201という警告が表示されます。

WEBサイトで警告内容を確認すると次のような内容になっています。

コード内の順序が間違っていることを警告されています。

コード内の順序1

SA1201の警告内容の中に,コード内の順序が解説されています。

まず初めに,次のような順序が記されています。

しかし,この順序は1ファイルに1クラスで記述するということにしておけば,関係ないので,あまり気にする必要がありません。要するにアプリケーション全体で使用するクラスや列挙体,構造体などは,1つにつき1ファイルにしておけば,順序などは最初から必要ありません。クラスの中だけで使用する列挙体などは,この限りではないので,次に解説する順序を確認にしてください。

コード内の順序2

これが,クラスの中に記述する順序です。色々ありますが,代表的なもので言うと次のあたりになると思います。

  • フィールド
  • コンストラクタ
  • デストラクタ
  • デリゲート
  • イベント
  • 列挙体
  • プロパティ
  • メソッド

まずクラスを書いたら,そのクラスで保持するメモリ空間として,フィールドを宣言します。その後にコンストラクタとデストラクタを書きます。その後にイベント関係であるデリゲート,イベントを書きます。そして列挙体。この辺りまでで,このクラスがどのような値を保持して,どのようなイベントを通知するのかが理解できます。そしてプロパティをみれば,どのような値が公開されているのか,外部から設定できるのかが把握できます。最後にメソッドです。この順序に違反すると今回の警告が表示されます。この警告は大事なので,必ず対応しましょう。

コード内順序の例

コード内順序に従うと,次のような感じになります。

順序をわざと入れ替えると,警告がでるので,色々試してみてください。この順序はC#でコーディングしている以上,永遠に付きまとうので,順序違いをみたら,気持ちが悪くなるくらい,体にしみこませてください。

C#コーディングルール