| 屬性 | 值 |
|---|---|
| 規則識別碼 | CA1720 |
| 職稱 | 識別項名稱不應該包含類型名稱 |
| 類別 | 命名 |
| 修正是造成中斷還是不中斷 | 中斷 |
| 在 .NET 10 中預設啟用 | 否 |
| 適用語言 | C# 與 Visual Basic |
原因
成員中的參數名稱包含數據類型名稱。
-或-
成員的名稱包含語言特定的數據類型名稱。
根據預設,此規則只會查看外部可見的成員,但這是可設定的。
規則描述
參數和成員的名稱最好用來傳達其意義,而不是用來描述類型,因為開發工具預期會提供該資訊。 針對成員的名稱,如果使用數據類型名稱,請使用與語言無關的名稱,而不是特定語言的名稱。 例如,使用與語言無關的數據類型名稱,而不是 C# 類型名稱intInt32。
參數或成員名稱中的每個離散令牌都會以不區分大小寫的方式,針對下列語言特定數據類型名稱進行檢查:
- 布林
- WChar
- Int8
- UInt8
- 短
- UShort
- int
- UInt
- 整數
- UInteger
- Long
- ULong
- 無符號
- 已簽署
- Float
- Float32
- Float64
此外,參數的名稱也會以不區分大小寫的方式,針對下列與語言無關的數據類型名稱進行檢查:
- 物件
- 布林值
- Char
- 字串
- SByte
- Byte
- UByte
- Int16
- UInt16
- Int32
- UInt32
- Int64
- UInt64
- IntPtr
- Ptr
- 指標
- UInptr
- UPtr
- UPointer
- 單一
- 雙倍
- Decimal
- Guid
如何修正違規
如果針對參數引發:
將參數名稱中的數據類型標識碼取代為更能描述其意義或更泛型的詞彙,例如 'value'。
如果對成員觸發:
將成員名稱中的語言特定數據類型識別符取代為更能描述其含義的詞彙、與語言無關的等效詞彙,或更泛泛的詞語,例如「value」。
Example
// This code violates the rule.
public class Short
{
public int Int32 { get; set; }
public Guid Guid { get; set; }
public void Float(int int32) { }
}
隱藏警告的時機
偶爾使用以類型為基礎的參數和成員名稱可能是適當的。 然而,對於新的開發,目前沒有任何已知的情境需要抑制此規則的警告。 對於先前已發布的函式庫,您可能必須抑制此規則的警告。
隱藏警告
如果您只想要隱藏單一違規,請將預處理器指示詞新增至原始程式檔以停用,然後重新啟用規則。
#pragma warning disable CA1720
// The code that's violating the rule is on this line.
#pragma warning restore CA1720
若要停用檔案、資料夾或專案的規則,請在組態檔中將其嚴重性設為 none。
[*.{cs,vb}]
dotnet_diagnostic.CA1720.severity = none
如需詳細資訊,請參閱 如何隱藏程式代碼分析警告。
設定程式代碼以分析
使用下列選項來設定程式代碼基底要執行此規則的部分。
您可以爲僅此規則、它所適用的所有規則,或所有屬於此類別(Naming)的規則設定此選項。 如需詳細資訊,請參閱 程式代碼品質規則組態選項。
包含特定 API 介面
您可以藉由設定 [api_surface] 選項,根據程式代碼基底的存取範圍,設定執行此規則的哪些部分。 例如,若要指定規則只應該針對非公用 API 介面執行,請將下列機碼/值組新增至 專案中的 .editorconfig 檔案:
dotnet_code_quality.CAXXXX.api_surface = private, internal
注意
以適用規則的標識碼取代 XXXX 的 CAXXXX 部分。