CA1710:識別項應該使用正確的後置字元
型別名稱 |
IdentifiersShouldHaveCorrectSuffix |
CheckId |
CA1710 |
分類 |
Microsoft.Naming |
中斷變更 |
中斷 |
原因
識別項沒有正確的後置字元。
規則描述
依照慣例,擴充某些基底型別 (Base Type) 或實作某些介面的型別名稱,或從這些型別衍生的型別,都具有與基底型別或介面關聯的後置字元。
命名慣例會為針對 Common Language Runtime 的程式庫提供通用的外觀。 如此可縮短新軟體程式庫的學習過程,並讓客戶深信程式庫是由學有專長的人員以不斷開發的 Managed 程式碼開發而成。
下表列出具有關聯之後置字元的基底型別和介面。
基底型別/介面 |
後置字元 |
---|---|
Attribute |
|
EventArgs |
|
Exception |
|
Collection |
|
Dictionary |
|
Collection |
|
Collection 或 Queue |
|
Collection 或 Stack |
|
Collection |
|
Dictionary |
|
DataSet |
|
Collection 或 DataTable |
|
Stream |
|
Permission |
|
Condition |
|
事件處理常式委派 |
EventHandler |
實作 ICollection 的型別,以及資料結構的一般型別 (例如 Dictionary、Stack 或 Queue),都是可以針對型別的預期使用方式提供有意義資訊的名稱。
實作 ICollection 的型別為特定項目的集合,具有以 'Collection' 這個字結尾的名稱。 例如,Queue 物件的集合會具有 'QueueCollection' 這個名稱。 'Collection' 後置字元表示可以使用 foreach (在 Visual Basic 中為 For Each) 陳述式 (Statement) 列舉集合的成員。
實作 IDictionary 的型別會具有以 'Dictionary' 這個字結尾的名稱,即使此型別還會實作 IEnumerable 或 ICollection 也是如此。 'Collection' 和 'Dictionary' 後置字元命名慣例可讓使用者辨別下列兩個列舉模式。
具有 'Collection' 後置字元的型別會遵循這個列舉模式。
foreach(SomeType x in SomeCollection) { }
具有 'Dictionary' 後置字元的型別會遵循這個列舉模式。
foreach(SomeType x in SomeDictionary.Values) { }
DataSet 物件是由 DataTable 物件的集合所組成,而後者是由 System.Data.DataColumn 和 System.Data.DataRow 等物件的集合所組成。 這些集合會透過基底 System.Data.InternalDataCollectionBase 類別實作 ICollection。
如何修正違規
重新命名型別,使它以正確的詞彙做為後置字元。
隱藏警告的時機
如果型別為可能會擴充或將含有各種不同項目之任意集合的通用資料結構,則您可以放心地隱藏使用 'Collection' 後置字元的警告。 在此情況下,可提供有關資料結構之實作、效能或其他特性之有意義資訊的名稱可能是合用的 (例如,BinaryTree)。 在型別代表特定型別之集合的情況下 (例如,StringCollection),請勿隱藏此規則的警告,因為後置字元會指出型別可以利用 foreach 陳述式加以列舉。
對於其他後置字元,請勿隱藏此規則的警告。 透過後置字元,即能從型別名稱中得知預期的用法。