CA1710: идентификаторы должны иметь правильные суффиксы
TypeName |
IdentifiersShouldHaveCorrectSuffix |
CheckId |
CA1710 |
Категория |
Microsoft.Naming |
Критическое изменение |
Критическое изменение |
Причина
Неправильный суффикс идентификатора.
Описание правила
По правилам имена типов, расширяющих определенные базовые типы или реализующих определенные интерфейсы, а также типов, являющихся производными от первых, имеют суффикс, связанный с базовым типом или интерфейсом.
Соглашения об именах обеспечивают единообразие библиотек, предназначенных для выполнения в среде CLR. Это позволяет сократить время обучения, необходимое для освоения новых библиотек программного обеспечения, и укрепить уверенность клиента в том, что библиотека была разработана опытным разработчиком управляемого кода.
В следующей таблице перечислены базовые типы и интерфейсы, которые имеют связанные суффиксы.
Базовый тип или интерфейс |
Суффикс |
---|---|
Атрибут |
|
EventArgs |
|
Исключение |
|
Collection |
|
Dictionary |
|
Collection |
|
Collection или Queue |
|
Collection или Stack |
|
Collection |
|
Dictionary |
|
DataSet |
|
Collection или DataTable |
|
Поток |
|
Разрешение |
|
Атрибут Condition |
|
Делегат обработчика событий. |
EventHandler |
Типы, реализующие ICollection и являющиеся обобщенным типом структуры данных, например словарь, стек или очередь, принимают имена, по которым можно понять предназначение типа.
Имена типов, реализующих ICollection и представляющих собой коллекцию определенных элементов, оканчиваются словом «Collection». Например, коллекция объектов Queue будет иметь имя "QueueCollection". Суффикс "Collection" означает, что члены коллекции могут быть перечислены с помощью оператора foreach (For Each в Visual Basic).
Имена типов, реализующих 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 в числе прочих. Эти коллекции реализуют ICollection через базовый класс System.Data.InternalDataCollectionBase.
Устранение нарушений
Переименуйте тип так, чтобы он имел правильный суффикс.
Отключение предупреждений
Можно без последствий отключить предупреждение об использовании суффикса "Collection", если тип представляет собой обобщенную структуру данных, которую можно расширить, или которая будет содержать необязательный набор различных элементов. В этом случае имя, являющееся описанием реализации, производительности или других характеристик структуры данных, может иметь смысл (например, BinaryTree). В случаях, когда тип представляет коллекцию определенного типа (например, StringCollection), не следует пропускать предупреждение из этого правила, поскольку суффикс указывает, что тип может быть перечислен с помощью оператора foreach.
Не отключайте предупреждение из этого правила для других суффиксов. Суффикс позволяет сделать понятным предназначение типа по его имени.
Связанные правила
CA1711: идентификаторы не должны иметь неверных суффиксов
См. также
Ссылки
Правила использования атрибутов