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

プロパティ
ルール ID CA1715
Title 識別子は正しいプレフィックスを含んでいなければなりません
[カテゴリ] 名前を付ける
修正が中断ありか中断なしか 中断あり - インターフェイスで発生した場合。

中断なし - ジェネリック型パラメーターで発生した場合。
.NET 8 では既定で有効 いいえ

原因

インターフェイスの名前が大文字の "I" から始まっていません。

\- または -

型またはメソッドのジェネリック型パラメーターの名前が、大文字の "T" から始まっていません。

既定では、この規則の対象は外部から参照可能なインターフェイス、型、メソッドのみですが、これは構成可能です。

規則の説明

慣例により、特定のプログラミング要素の名前は、特定のプレフィックスで始まります。

インターフェイス名は、大文字の "I" で始まり、2 文字目も大文字である必要があります。 この規則によって、"MyInterface" や "IsolatedInterface" のようなインターフェイス名は違反として報告されます。

ジェネリック型パラメーター名の先頭は大文字の "T" でなければならず、2 文字目を大文字にするかどうかは任意です。 この規則によって、"V" や "Type" のようなジェネリック型パラメーター名の違反が報告されます。

名前付け規則では、共通言語ランタイムをターゲットとするライブラリの統一的な名前の付け方が規定されています。 これにより、新しいソフトウェア ライブラリを習得するまでの時間を短縮でき、マネージド コード開発の専門家によってライブラリが開発されたという信頼を顧客に与えることができます。

分析するコードを構成する

次のオプションを使用して、コードベースのどの部分に対してこの規則を実行するかを構成します。

これらのオプションを構成できる対象は、この規則だけ、それを適用するすべての規則、それを適用するこのカテゴリ (名前付け) のすべての規則のいずれかです。 詳細については、「コード品質規則の構成オプション」を参照してください。

特定の API サーフェイスを含める

ユーザー補助に基づいて、この規則を実行するコードベースの部分を構成できます。 たとえば、非パブリック API サーフェイスでのみ規則を実行するように指定するには、プロジェクトの .editorconfig ファイルに次のキーと値のペアを追加します。

dotnet_code_quality.CAXXXX.api_surface = private, internal

1 文字の型パラメーター

1 文字の型パラメーターをこの規則から除外するかどうかを構成できます。 たとえば、この規則で 1 文字の型パラメーターを分析 "しない" ように指定するには、次のキーと値のペアのいずれかをプロジェクトの .editorconfig ファイルに追加します。

# Package version 2.9.0 and later
dotnet_code_quality.CA1715.exclude_single_letter_type_parameters = true

# Package version 2.6.3 and earlier
dotnet_code_quality.CA2007.allow_single_letter_type_parameters = true

Note

この規則は、T という名前の型パラメーターに対しては発生しません (たとえば Collection<T>)。

違反の修正方法

正しいプレフィックスとなるように、識別子の名前を変更します。

どのようなときに警告を抑制するか

この規則による警告は抑制しないでください。

インターフェイスの名前付けの例

次のコード スニペットでは、インターフェイスに正しくない名前が付けられています。

' Violates this rule
Public Interface Book

    ReadOnly Property Title() As String

    Sub Read()

End Interface
// Violation.
public interface Book
{
    string Title
    {
        get;
    }

    void Read();
}

次のコード スニペットでは、インターフェイスのプレフィックスを "I" にして前の違反を修正しています。

// Fixes the violation by prefixing the interface with 'I'.
public interface IBook
{
    string Title
    {
        get;
    }

    void Read();
}
' Fixes the violation by prefixing the interface with 'I'
Public Interface IBook

    ReadOnly Property Title() As String

    Sub Read()

End Interface

型パラメーターの名前付けの例

次のコード スニペットでは、型パラメーターに正しくない名前が付けられています。

' Violates this rule
Public Class Collection(Of Item)

End Class
// Violation.
public class Collection<Item>
{
}

次のコード スニペットでは、型パラメーターのプレフィックスを "T" にして前の違反を修正しています。

// Fixes the violation by prefixing the generic type parameter with 'T'.
public class Collection<TItem>
{
}
' Fixes the violation by prefixing the generic type parameter with 'T'
Public Class Collection(Of TItem)

End Class