Partilhar via


Nomes de classes, estruturas e interfaces

Nota

Este conteúdo é reimpresso com permissão da Pearson Education, Inc., a partir de Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Essa edição foi publicada em 2008 e, desde então, o livro foi totalmente revisto na terceira edição. Algumas das informações nesta página podem estar desatualizadas.

As diretrizes de nomenclatura a seguir aplicam-se à nomenclatura geral de tipos.

✔️ DO nomeia classes e estruturas com substantivos ou frases nominais, usando PascalCasing.

Isso distingue nomes de tipo de métodos, que são nomeados com frases verbais.

✔️ O nome DO faz interface com frases adjetivas ou, ocasionalmente, com substantivos ou frases nominais.

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

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

✔️ CONSIDERE terminar o nome das classes derivadas com o nome da classe base.

Isto é 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 de julgamento razoável na aplicação desta diretriz; Por exemplo, a Button classe é um tipo de Control evento, embora Control não apareça em seu nome.

✔️ Nomes de interface de prefixo DO com a letra I, para indicar que o tipo é uma interface.

Por exemplo, IComponent (substantivo descritivo), ICustomAttributeProvider (frase nominal) e IPersistable (adjetivo) são nomes de interface apropriados. Tal como acontece com outros nomes de tipo, evite abreviaturas.

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

Nomes de parâmetros de tipo genéricos

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

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

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

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

✔️ Nomes de parâmetros de tipo descritivo do prefixo DO 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 TSessionde .

Nomes de tipos comuns

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

Tipo de base Diretriz de tipo derivada/de implementação
System.Attribute ✔️ DO adicione o sufixo "Attribute" a nomes de classes de atributos personalizados.
System.Delegate ✔️ DO adicione o sufixo "EventHandler" aos nomes dos delegados que são usados em eventos.

✔️ DO 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 ✔️ DO adicione o sufixo "EventArgs".
System.Enum ❌ NÃO derivam desta classe; em vez disso, utilize a palavra-chave suportada pelo seu idioma; por exemplo, em C#, use a enum palavra-chave.

❌ NÃO adicione o sufixo "Enum" ou "Flag".
System.Exception ✔️ Adicione o sufixo "Exceção".
IDictionary
IDictionary<TKey,TValue>
✔️ NÃO adicione o sufixo "Dicionário". Observe que IDictionary é um tipo específico de coleção, mas essa diretriz tem precedência sobre a diretriz de coleções mais geral que se segue.
IEnumerable
ICollection
IList
IEnumerable<T>
ICollection<T>
IList<T>
✔️ DO adicione o sufixo "Collection".
System.IO.Stream ✔️ NÃO adicione o sufixo "Stream".
CodeAccessPermission IPermission ✔️ NÃO adicione o sufixo "Permissão".

Nomeando enumerações

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

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

✔️ DO use um nome de tipo plural para uma enumeração com campos de bit como valores, também chamados de flags enum.

❌ NÃO use um sufixo "Enum" em nomes de tipo de enum.

❌ NÃO use sufixos "Flag" ou "Flags" em nomes de tipo enum.

❌ NÃO use um prefixo em nomes de valores de enumeração (por exemplo, "ad" para enums ADO, "rtf" para enums rich text, etc.).

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

Reimpresso com permissão da Pearson Education, Inc., de 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 por Addison-Wesley Professional como parte da Microsoft Windows Development Series.

Consulte também