次の方法で共有


"Microsoft 拡張デザイン ガイドライン規則" コード分析規則セット

"Microsoft 拡張デザイン ガイドライン規則" 規則セットは、基本デザイン ガイドライン規則をさらに掘り下げて、使用可能性と保守容易性に関する問題の検出件数を最大化するためのものです。 命名に関するガイドラインに重点が置かれています。 プロジェクトにライブラリ コードが含まれる場合や、保守が容易なコードを記述するために最高レベルの基準を適用する場合は、この規則セットの使用を検討してください。

"拡張デザイン ガイドライン規則" には、"Microsoft 基本デザイン ガイドライン規則" 内のすべての規則が含まれます。 "基本デザイン ガイドライン規則" には、"Microsoft 最小推奨規則" 内のすべての規則が含まれます。 詳細については、「"Microsoft 基本デザイン ガイドライン規則" コード分析規則セット」および「"Microsoft 最小推奨規則" コード分析規則セット」を参照してください。

"Microsoft 拡張デザイン ガイドライン規則" 規則セット内のすべての規則について、以下の表で説明します。

規則

説明

CA1020: 型をほとんど含まない名前空間を使用しません

配置する型数の少ない名前空間を作成する場合、各名前空間を論理的に構成し、有効な理由を付けます。

CA1021: out パラメーターを使用しません

(out または ref を使用した) 型の参照渡しには、ポインターの使用経験、値型と参照型の違いの理解、および複数の戻り値を持つメソッドの処理が必要です。 また、out パラメーターと ref パラメーターの違いはあまり理解されていません。

CA1040: 空のインターフェイスは使用しないでください

インターフェイスには、動作や使用のコントラクトを実現するメンバーが定義されます。 インターフェイスで示される機能は、継承の階層構造内に型が存在するかどうかにかかわらず、どの型からも適用できます。 型ではインターフェイスのメンバーに実装することで、インターフェイスが実装されます。 空のインターフェイスではメンバーが定義されません。そのため、実装できるコントラクトも定義されません。

CA1045: 型を参照によって渡しません

(out または ref を使用した) 型の参照渡しには、ポインターの使用経験、値型と参照型の違いの理解、および複数の戻り値を持つメソッドの処理が必要です。 開発者全般に向けてライブラリをデザインする場合、ユーザーが out パラメーターまたは ref パラメーターの扱い方を習得することは期待しないでください。

CA1062: パブリック メソッドの引数の検証

外部から参照可能なメソッドに渡されるすべての参照引数について、null かどうかをチェックする必要があります。

CA1501: 継承を使用しすぎないでください

型が、その継承階層内の 5 つ以上深いレベルにあります。 深いレベルで入れ子にされた型の確認、理解、および保守は困難です。

CA1504: 紛らわしいフィールド名を確認します

インスタンス フィールドの名前が "s_" で始まっているか、static (Visual Basic では Shared) フィールドの名前が "m_" で始まっています。

CA1505: メンテナンスできないコードを使用しないでください

型またはメソッドの保守容易性指数が低い値です。 保守容易性指数の低い型またはメソッドは、保守が困難な可能性があるため、デザインの変更を検討することをお勧めします。

CA1506: クラス結合度を大きくしすぎないでください

この規則は、型またはメソッドに含まれる一意の型参照の数をカウントすることによって、クラス結合度を計測します。

CA1700: enum 値に 'Reserved' という名前を指定しません

この規則では、"reserved" を含む名前の列挙体のメンバーは、現在使用されていなくても、将来的なバージョンでは名前を変更するか削除されるプレースホルダーと想定しています。 メンバーの名前変更や削除は、互換性に影響する変更点です。

CA1701: リソース文字列の複合語は、大文字と小文字を正しく区別しなければなりません

リソース文字列内の語は、大文字と小文字に基づいてトークンに分割されます。 Microsoft スペル チェック ライブラリは、隣接する 2 つのトークンの組み合わせを個別にチェックします。 それらが認識されると、その語はこの規則への違反となります。

CA1702: 複合語では、大文字と小文字が正しく区別されなければなりません

識別子の名前に複数の語が含まれており、大文字と小文字が正しく使い分けられていない複合語が 1 つ以上あります。

CA1703: リソース文字列は正しく入力されなければなりません

リソース文字列に Microsoft スペル チェック ライブラリで認識されない語が 1 つ以上含まれています。

CA1704: 識別子は正しく入力されなければなりません

外部から参照できる識別子の名前に Microsoft スペル チェック ライブラリで認識されない語が 1 つ以上含まれています。

CA1707: 識別子はアンダースコアを含むことはできません

名前付け規則では、識別子名にアンダースコア (_) 文字を含めることができません。 この規則により、名前空間、型、メンバー、およびパラメーターがチェックされます。

CA1709: 識別子では、大文字と小文字が正しく区別されなければなりません

名前付け規則では、パラメーター名には Camel 形式が使用され、名前空間、型、およびメンバーの名前には Pascal 形式が使用されます。

CA1710: 識別子は、正しいサフィックスを含んでいなければなりません

名前付け規則によると、特定の基本型を拡張した型、特定のインターフェイスを実装する型、またはそのような型の派生型は、基本型やインターフェイスに関連するサフィックスを名前に付けます。

CA1711: 識別子は、不適切なサフィックスを含むことはできません

規則では、特定の基本型を拡張する型、特定のインターフェイスを実装する型、またはそのような型から派生した型の名前にのみ、固有の予約済みサフィックスを末尾に付けます。 その他の型名では、予約済みのサフィックスを使用しないでください。

CA1712: enum 値を型名のプレフィックスにしません

型の情報は開発ツールで表示されるため、列挙型のメンバー名には、型名のプレフィックスを付けません。

CA1713: イベントは、before または after プレフィックスを含むことはできません

イベント名が "Before" または "After" で始まっています。 特定のシーケンスで発生する関連イベントに名前を付ける場合、現在時制または過去時制を使用して、アクション シーケンスの相対的な位置を示します。

CA1714: フラグ列挙は、複数形の名前を含んでいなければなりません

パブリック列挙体に System.FlagsAttribute 属性があり、その名前の末尾に "s" がありません。 FlagsAttribute でマークされた型は複数形の名前を持ちます。これは、この属性が複数の値を指定できることを示すからです。

CA1715: 識別子は正しいプレフィックスを含んでいなければなりません

外部から参照できるインターフェイスの名前が大文字の "I" から始まっていません。 外部から参照できる型またはメソッドのジェネリック型パラメーターの名前が、大文字の "T" から始まっていません。

CA1717: FlagsAttribute 列挙のみが複数形の名前を含んでいなければなりません

名前付け規則では、列挙体の複数形の名前は同時に複数の列挙値を指定できることを意味します。

CA1719: パラメーター名はメンバー名と同一にすることはできません

パラメーターはパラメーターの意味、メンバーはメンバーの意味を伝える名前にします。 この 2 つの名前が一致するデザインは、まれにしか見られません。 パラメーターにメンバーと同じ名前を付けるとわかりづらくなり、ライブラリの操作が難しくなります。

CA1720: 識別子には型名を含めないでください

外部から参照できるメンバーのパラメーター名にデータ型の名前が含まれているか、外部から参照できるメンバーの名前に言語固有のデータ型の名前が含まれています。

CA1721: プロパティ名は get メソッドと同一にすることはできません

パブリック メンバーまたはプロテクト メンバーの名前が、"Get" から始まっているか、パブリック プロパティまたはプロテクト プロパティの名前と一致します。 " Get メソッドとプロパティは、機能を明確に区別できる名前にします。

CA1722: 識別子は不適切なプレフィックスを含むことはできません。

規則では、特定のプログラミング要素にのみ、固有のプレフィックスで始まる名前を付けることができます。

CA1724: 型名は名前空間と同一にすることはできません

型の名前は、.NET Framework クラス ライブラリで定義されている名前空間の名前と一致しないようにする必要があります。 この規則に違反すると、ライブラリが使いづらくなります。

CA1725: パラメーター名は基本宣言と同一でなければなりません

オーバーライド階層のパラメーターに対する一貫性のある名前付けによって、メソッド オーバーライドの有用性が高まります。 派生メソッドのパラメーター名が基本宣言のパラメーター名と異なる場合、メソッドが基本メソッドのオーバーライドであるか、またはメソッドの新しいオーバーライドであるかについて混乱が生じる可能性があります。

CA1726: 適切な用語を使用します

外部から参照可能な識別子の名前に含まれている用語に対応する、別の推奨される用語があります。 あるいは、名前に "Flag" または "Flags" という語が含まれています。

CA2204: リテラルは正しく入力されていなければなりません

メソッド本体に含まれるリテラル文字列内に Microsoft スペル チェック ライブラリで認識されない語が 1 つ以上あります。