Compartilhar via


Nomes de classes, structs e interfaces

Observação

Esse conteúdo é reimpresso por permissão da Pearson Education, Inc. das Diretrizes de Design da Estrutura: Convenções, Idiomas e Padrões para Bibliotecas .NET Reutilizáveis, 2ª Edição. Essa edição foi publicada em 2008, e desde então o livro foi totalmente revisado na terceira edição. Algumas das informações nesta página podem estar desatualizadas.

As diretrizes de nomenclatura a seguir se aplicam à nomenclatura de tipo geral.

Nomeie classes e structs com nomes ou frases nominais, usando PascalCase.

Isso distingue nomes de tipo de métodos, que são nomeados com locuções verbais.

✔️ Nomeie interfaces com frases adjetivas, ou ocasionalmente com substantivos ou frases substantivas.

Substantivos e frases substantivas devem ser usados raramente e podem indicar que o tipo deve ser uma classe abstrata e não uma interface.

❌ NÃO dê aos nomes de classe um prefixo (por exemplo, "C").

✔️ CONSIDERE encerrar o nome de classes derivadas com o nome da classe base.

Isso é muito legível e explica claramente a relação. Alguns exemplos disso no código são: ArgumentOutOfRangeException, que é uma espécie de Exception, e SerializableAttribute, que é uma espécie de Attribute. No entanto, é importante usar um julgamento razoável na aplicação dessa diretriz; por exemplo, a Button classe é um tipo de Control evento, embora Control não apareça em seu nome.

✔️ Prefira nomes de interface que comecem com a letra I, para indicar que o tipo é uma interface.

Por exemplo, IComponent (substantivo descritivo), ICustomAttributeProvider (frase substantiva) e IPersistable (adjetivo) são nomes de interface apropriados. Assim como acontece com outros nomes de tipo, evite abreviações.

✔️ Verifique se os nomes diferem apenas pelo prefixo "I" no nome da interface quando você estiver definindo um par classe-interface em que a classe é uma implementação padrão da interface.

Nomes de parâmetros de tipo genérico

Genéricos foram adicionados ao .NET Framework 2.0. O recurso introduziu um novo tipo de identificador chamado parâmetro de tipo.

✔️ DO nomeie parâmetros de tipo genérico com nomes descritivos, a menos que um nome de letra única seja completamente autoexplicativo e um nome descritivo não adicione valor.

✔️ CONSIDERE o uso do T como nome do parâmetro de tipo para tipos com parâmetro de tipo de uma única letra.

public int IComparer<T> { ... }
public delegate bool Predicate<T>(T item);
public struct Nullable<T> where T:struct { ... }

✔️ Prefixe nomes de parâmetro de tipo descritivo com T.

public interface ISessionChannel<TSession> where TSession : ISession {
    TSession Session { get; }
}

✔️ CONSIDERE indicar restrições colocadas em um parâmetro de tipo no nome do parâmetro.

Por exemplo, um parâmetro restrito a ISession pode ser chamado TSession.

Nomes de tipos comuns

✔️ SIGA as diretrizes descritas na tabela a seguir ao nomear tipos derivados ou implementar determinados tipos do .NET Framework.

Tipo base Diretriz de tipo derivado/de implementação
System.Attribute ✔️ ADICIONE o sufixo "Attribute" aos nomes de classes de atributo personalizadas.
System.Delegate ✔️ ADICIONE o sufixo "EventHandler" aos nomes de delegados que são usados em eventos.

✔️ ADICIONE o sufixo "Callback" a nomes de delegados diferentes daqueles usados como manipuladores de eventos.

❌ NÃO adicione o sufixo "Delegate" a um delegado.
System.EventArgs ✔️ Inclua o sufixo "EventArgs".
System.Enum ❌ NÃO derive dessa classe; use a palavra-chave suportada pelo seu idioma; por exemplo, em C#, use a palavra-chave enum.

❌ NÃO adicione o sufixo "Enum" ou "Flag".
System.Exception ✔️ Adicione o sufixo "Exception".
IDictionary
IDictionary<TKey,TValue>
✔️ Adicione o sufixo "Dictionary". Observe que IDictionary é um tipo específico de coleção, mas essa diretriz tem precedência sobre a diretriz de coleções mais gerais a seguir.
IEnumerable
ICollection
IList
IEnumerable<T>
ICollection<T>
IList<T>
✔️ Certifique-se de adicionar o sufixo "Collection".
System.IO.Stream ✔️ ADICIONE o sufixo "Stream".
CodeAccessPermission IPermission ✔️ Adicionar o sufixo "Permission".

Nomeando Enumerações

Os nomes de tipos de enumeração (também chamados de enumes) em geral devem seguir as regras padrão de nomenclatura de tipo (PascalCasing, etc.). No entanto, há diretrizes adicionais que se aplicam especificamente a enums.

✔️ USE um nome de tipo singular para uma enumeração, a menos que seus valores sejam campos de bits.

✔️ USE um nome de tipo plural para uma enumeração com campos de bits como valores, também chamado de enumeração de sinalizadores.

❌ NÃO use um sufixo "Enum" em nomes de tipo de enumeração.

❌ NÃO use os sufixos "Sinalizador" ou "Sinalizadores" nos nomes dos tipos de enumeração.

❌ NÃO use um prefixo em nomes de valor de enumeração (por exemplo, "ad" para enumeradores do ADO, "rtf" para enumeradores de texto rico etc.).

Partes © 2005, 2009 Microsoft Corporation. Todos os direitos reservados.

Reimpresso por permissão da Pearson Education, Inc. da Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition por Krzysztof Cwalina e Brad Abrams, publicado em 22 de outubro de 2008 pela Addison-Wesley Professional como parte da Microsoft Windows Development Series.

Consulte também