CA1715:識別項名稱應該使用正確的前置字元

屬性
規則識別碼 CA1715
標題 識別項名稱應該使用正確的前置字元
類別 命名
修正程式是中斷或非中斷 中斷 - 在介面上引發時。

非中斷 - 在泛型類型參數上引發時。
預設在 .NET 8 中啟用 No

原因

介面的名稱不是以大寫 『I』 開頭。

-或-

類型或方法上的泛型型別參數名稱不會以大寫 『T』 開頭。

根據預設,此規則只會查看外部可見的介面、類型和方法,但這是可設定

檔案描述

依照慣例,特定程式設計項目的名稱會以特定前置詞開頭。

介面名稱開頭應該是大寫 『I』,後面接著另一個大寫字母。 此規則會報告介面名稱的違規,例如 『MyInterface』 和 『IsolatedInterface』。

泛型類型參數名稱應該以大寫 『T』 開頭,並選擇性地後面接著另一個大寫字母。 此規則會報告泛型類型參數名稱的違規,例如 『V』 和 『Type』。

命名慣例是以通用語言執行平台為目標的程式庫,提供一種通用的寫法。 如此一來,可縮短新軟體程式庫所需的學習曲線,並且因為程式庫是由具備開發受控程式碼專業知識的人員所開發,進而提升客戶的信賴感。

設定程式代碼以分析

使用下列選項來設定程式代碼基底要執行此規則的部分。

您可以只針對此規則、它套用的所有規則,或針對套用至此類別的所有規則(命名)設定這些選項。 如需詳細資訊,請參閱 程式代碼品質規則組態選項

包含特定 API 介面

您可以根據程式代碼基底的存取範圍,設定要執行此規則的部分。 例如,若要指定規則只應該針對非公用 API 介面執行,請將下列機碼/值組新增至 專案中的 .editorconfig 檔案:

dotnet_code_quality.CAXXXX.api_surface = private, internal

單一字元類型參數

您可以設定是否要從此規則中排除單一字元類型參數。 例如,若要指定此規則 不應該 分析單一字元類型參數,請將下列其中一個索引鍵/值組新增至專案中的 .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

注意

此規則絕不會針對名為 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