1. ホーム
  2. c#

[解決済み] クラス内の項目の並び順。フィールド、プロパティ、コンストラクター、メソッド

2022-03-14 04:36:58

質問

クラス構造から見た項目の順序について、C#の公式ガイドラインはありますか?

行くのでしょうか。

  • 公開フィールド
  • プライベートフィールド
  • プロパティ
  • コンストラクタ
  • メソッド

    ?

アイテムの順番について、確固たるルールがあるのかどうか、気になります。なんだか、あちこちでやっています。どこでもできるように、特定の基準にこだわりたいんです。

本当の問題は、より複雑なプロパティがメソッドのように見えてしまい、コンストラクタの前の一番上にあるのが場違いな気がすることです。

何かヒントや提案があれば教えてください。

解決方法は?

によると スタイルコップ ルール ドキュメント の場合、順序は以下のようになります。

クラス、構造体、またはインターフェイス内。(SA1201、SA1203)

  • 定数フィールド
  • フィールド
  • コンストラクタ
  • ファイナライザー(デストラクター)
  • デリゲート
  • イベント
  • 列挙型
  • インターフェイス ( インターフェース実装 )
  • プロパティ
  • インデクサ
  • メソッド
  • 構造体
  • クラス

それぞれのグループ内で、アクセス順に並べます。(SA1202)

  • 公開
  • 内部
  • プロテクトされた内部
  • プロテクト
  • プライベート

各アクセスグループ内では、静的、非静的の順に並べる。(SA1204)

  • スタティック
  • 非静的

静的/非静的フィールドの各グループ内で、読み取り専用、読み取り不可の順に並べる : (SA1214 と SA1215)

  • 読み取り専用
  • 非読取専用

展開したリストは130行になるので、ここでは展開しない。メソッド部分を展開したものは

  • パブリックスタティックメソッド
  • パブリックメソッド
  • 内部静的メソッド
  • 内部メソッド
  • protected 内部静的メソッド
  • プロテクトされた内部メソッド
  • プロテクトされた静的メソッド
  • プロテクトされたメソッド
  • プライベートスタティックメソッド
  • プライベートメソッド

例えば、複数のインターフェースが実装されており、インターフェースのメソッドやプロパティがグループ化されている場合、関連するメソッドやプロパティをグループ化するためにパーシャルクラスを使用する、とドキュメントに記載されています。