CA1710: Identificadores devem ter um sufixo corretoCA1710: Identifiers should have correct suffix

ValorValue
ID da regraRule ID CA1710CA1710
CategoriaCategory NomenclaturaNaming
A correção está sendo interrompida ou não está sendo interrompidaFix is breaking or non-breaking QuebraBreaking

CausaCause

Um identificador não tem o sufixo correto.An identifier does not have the correct suffix.

Por padrão, essa regra só examina identificadores visíveis externamente, mas isso é configurável.By default, this rule only looks at externally visible identifiers, but this is configurable.

Descrição da regraRule description

Por convenção, os nomes de tipos que estendem determinados tipos de base ou que implementam determinadas interfaces, ou tipos derivados desses tipos, têm um sufixo associado ao tipo ou interface base.By convention, the names of types that extend certain base types or that implement certain interfaces, or types derived from these types, have a suffix that is associated with the base type or interface.

As convenções de nomenclatura fornecem uma aparência comum para as bibliotecas direcionadas ao Common Language Runtime.Naming conventions provide a common look for libraries that target the common language runtime. Isso reduz a curva de aprendizado necessária para novas bibliotecas de software e aumenta a confiança do cliente de que a biblioteca foi desenvolvida por alguém que tenha experiência no desenvolvimento de código gerenciado.This reduces the learning curve that is required for new software libraries, and increases customer confidence that the library was developed by someone who has expertise in developing managed code.

A tabela a seguir lista os tipos de base e as interfaces que têm sufixos associados.The following table lists the base types and interfaces that have associated suffixes.

Tipo/interface baseBase type/Interface SufixoSuffix
System.Attribute AtributoAttribute
System.EventArgs EventArgsEventArgs
System.Exception ExceçãoException
System.Collections.ICollection ColeçãoCollection
System.Collections.IDictionary DictionaryDictionary
System.Collections.IEnumerable ColeçãoCollection
System.Collections.Generic.IReadOnlyDictionary<TKey,TValue> DictionaryDictionary
System.Collections.Queue Coleção ou filaCollection or Queue
System.Collections.Stack Coleção ou pilhaCollection or Stack
System.Collections.Generic.ICollection<T> ColeçãoCollection
System.Collections.Generic.IDictionary<TKey,TValue> DictionaryDictionary
System.Data.DataSet DataSetDataSet
System.Data.DataTable Coleção ou DataTableCollection or DataTable
System.IO.Stream FluxoStream
System.Security.IPermission PermissãoPermission
System.Security.Policy.IMembershipCondition CondiçãoCondition
Um delegado de manipulador de eventos.An event-handler delegate. EventHandlerEventHandler

Os tipos que implementam ICollection e são um tipo generalizado de estrutura de dados, como um dicionário, uma pilha ou uma fila, são nomes permitidos que fornecem informações significativas sobre o uso pretendido do tipo.Types that implement ICollection and are a generalized type of data structure, such as a dictionary, stack, or queue, are allowed names that provide meaningful information about the intended usage of the type.

Os tipos que implementam ICollection e são uma coleção de itens específicos têm nomes que terminam com a palavra ' Collection '.Types that implement ICollection and are a collection of specific items have names that end with the word 'Collection'. Por exemplo, uma coleção de Queue objetos teria o nome ' QueueCollection '.For example, a collection of Queue objects would have the name 'QueueCollection'. O sufixo ' Collection ' significa que os membros da coleção podem ser enumerados usando a foreach For Each instrução (in Visual Basic).The 'Collection' suffix signifies that the members of the collection can be enumerated by using the foreach (For Each in Visual Basic) statement.

Tipos que implementam IDictionary ou IReadOnlyDictionary<TKey,TValue> têm nomes que terminam com a palavra ' Dictionary ', mesmo que o tipo também implemente IEnumerable ou ICollection .Types that implement IDictionary or IReadOnlyDictionary<TKey,TValue> have names that end with the word 'Dictionary' even if the type also implements IEnumerable or ICollection. As convenções de nomenclatura de sufixo ' Collection ' e ' Dictionary ' permitem que os usuários diferenciem entre os dois padrões de enumeração a seguir.The 'Collection' and 'Dictionary' suffix naming conventions enable users to distinguish between the following two enumeration patterns.

Os tipos com o sufixo ' Collection ' seguem esse padrão de enumeração.Types with the 'Collection' suffix follow this enumeration pattern.

foreach(SomeType x in SomeCollection) { }

Os tipos com o sufixo ' Dictionary ' seguem esse padrão de enumeração.Types with the 'Dictionary' suffix follow this enumeration pattern.

foreach(SomeType x in SomeDictionary.Values) { }

Um DataSet objeto consiste em uma coleção de DataTable objetos, que consistem em coleções System.Data.DataColumn e System.Data.DataRow objetos, entre outros.A DataSet object consists of a collection of DataTable objects, which consist of collections of System.Data.DataColumn and System.Data.DataRow objects, among others. Essas coleções implementam ICollection por meio da System.Data.InternalDataCollectionBase classe base.These collections implement ICollection through the base System.Data.InternalDataCollectionBase class.

Como corrigir violaçõesHow to fix violations

Renomeie o tipo para que ele seja sufixado com o termo correto.Rename the type so that it is suffixed with the correct term.

Quando suprimir avisosWhen to suppress warnings

É seguro suprimir um aviso para usar o sufixo ' Collection ' se o tipo for uma estrutura de dados generalizada que pode ser estendida ou que conterá um conjunto arbitrário de itens diferentes.It is safe to suppress a warning to use the 'Collection' suffix if the type is a generalized data structure that might be extended or that will hold an arbitrary set of diverse items. Nesse caso, um nome que fornece informações significativas sobre a implementação, o desempenho ou outras características da estrutura de dados pode fazer sentido (por exemplo, BinaryTree).In this case, a name that provides meaningful information about the implementation, performance, or other characteristics of the data structure might make sense (for example, BinaryTree). Nos casos em que o tipo representa uma coleção de um tipo específico (por exemplo, StringCollection), não omita um aviso dessa regra porque o sufixo indica que o tipo pode ser enumerado usando uma foreach instrução.In cases where the type represents a collection of a specific type (for example, StringCollection), do not suppress a warning from this rule because the suffix indicates that the type can be enumerated by using a foreach statement.

Para outros sufixos, não omita um aviso dessa regra.For other suffixes, do not suppress a warning from this rule. O sufixo permite que o uso pretendido seja evidente a partir do nome do tipo.The suffix allows the intended usage to be evident from the type name.

Configurar o código para analisarConfigure code to analyze

Use as opções a seguir para configurar em quais partes de sua base de código executar essa regra.Use the following options to configure which parts of your codebase to run this rule on.

Você pode configurar essas opções apenas para essa regra, para todas as regras ou para todas as regras nesta categoria (nomenclatura).You can configure these options for just this rule, for all rules, or for all rules in this category (Naming). Para obter mais informações, consulte Opções de configuração de regra de qualidade de código.For more information, see Code quality rule configuration options.

Incluir superfícies de API específicasInclude specific API surfaces

Você pode configurar em quais partes de sua base de código executar essa regra, com base em sua acessibilidade.You can configure which parts of your codebase to run this rule on, based on their accessibility. Por exemplo, para especificar que a regra deve ser executada somente na superfície da API não pública, adicione o seguinte par chave-valor a um arquivo . editorconfig em seu projeto:For example, to specify that the rule should run only against the non-public API surface, add the following key-value pair to an .editorconfig file in your project:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Excluir tipos base indiretosExclude indirect base types

Você pode configurar se deseja excluir tipos de base indiretos da regra.You can configure whether to exclude indirect base types from the rule. Por padrão, essa opção é definida como true, o que restringe a análise para o tipo base atual.By default, this option is set to true, which restricts analysis to the current base type.

dotnet_code_quality.CA1710.exclude_indirect_base_types = false

Sufixos adicionais necessáriosAdditional required suffixes

Você pode fornecer sufixos adicionais necessários ou substituir o comportamento de alguns sufixos codificados adicionando o seguinte par chave-valor a um arquivo . editorconfig em seu projeto:You can provide additional required suffixes or override the behavior of some hardcoded suffixes by adding the following key-value pair to an .editorconfig file in your project:

dotnet_code_quality.CA1710.additional_required_suffixes = [type]->[suffix]

Separe vários valores com um | caractere.Separate multiple values with a | character. Os tipos podem ser especificados em um dos seguintes formatos:Types can be specified in either of the following formats:

  • Somente nome de tipo (inclui todos os tipos com o nome, independentemente do tipo ou namespace que o contém).Type name only (includes all types with the name, regardless of the containing type or namespace).
  • Nomes totalmente qualificados no formato de ID de documentação do símbolo com um T: prefixo opcional.Fully qualified names in the symbol's documentation ID format with an optional T: prefix.

Exemplos:Examples:

Valor de OpçãoOption Value ResumoSummary
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class Todos os tipos que herdam de ' MyClass ' devem ter o sufixo ' class '.All types that inherit from 'MyClass' are required to have the 'Class' suffix.
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class|MyNamespace.IPath->Path Todos os tipos que herdam de ' MyClass ' devem ter o sufixo ' class ' e todos os tipos que implementam ' MyNamespace. IPath ' devem ter o sufixo ' path '.All types that inherit from 'MyClass' are required to have the 'Class' suffix AND all types that implement 'MyNamespace.IPath' are required to have the 'Path' suffix.
dotnet_code_quality.CA1710.additional_required_suffixes = T:System.Data.IDataReader->{} Substitui os sufixos internos.Overrides built-in suffixes. Nesse caso, todos os tipos que implementam ' IDataReader ' não são mais necessários para terminar em ' Collection '.In this case, all types that implement 'IDataReader' are no longer required to end in 'Collection'.

CA1711: Identificadores não devem ter um sufixo incorretoCA1711: Identifiers should not have incorrect suffix

Consulte tambémSee also