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