Compartilhar via


Design de enumeração

Enumerações fornecem conjuntos de valores constante que são úteis para a digitação membros fortemente e melhorar a legibilidade do código. Enumerações são simples ou sinalizadores. Enumerações simples contêm valores que não são combinados ou usados em comparações bit a bit. Sinalizadores de enumerações devem ser combinada com operações OR bit a bit. Combinações de valores de enumeração de sinalizadores são examinadas usando operações AND bit a bit.

As diretrizes a seguir descrevem as práticas recomendadas para o design de enumeração.

Use uma enumeração para tipar fortemente parâmetros, propriedades e retornar valores que representam conjuntos de valores.

Favorecer usando uma enumeração em vez de estático constantes.

O exemplo de código a seguir demonstra o incorreto Design.

Public Class BadFurnishings

    Public Shared Table As Integer = 1
    Public Shared Chair As Integer = 2
    Public Shared Lamp As Integer = 3

End Class
public static class BadFurnishings
{
    public static int Table = 1;
    public static int Chair = 2;
    public static int Lamp = 3;
}

O exemplo de código a seguir demonstra a enumeração deve ser usada no lugar de constantes estáticas.

Public Enum GoodFurnishings

    Table
    Chair
    Lamp

End Enum
public enum GoodFurnishings
{
    Table,
    Chair,
    Lamp
}

Não use uma enumeração de conjuntos abertos, sistema autônomo a versão do sistema operacional.

Adicionar valores de uma enumeração já foi remetida podem quebrar o código existente. Há vezes quando isso é aceitável, mas você não deve criar uma enumeração onde isso provavelmente será o caso.

Não defina valores de enumeração reservado projetados para uso futuro.

Em algumas situações, você pode decidir que adicionar valores a enumeração despachada vale o risco de quebrar possivelmente código existente. Você também pode definir uma nova enumeração e membros que funcionam com seus valores.

Evite expor publicamente enumerações com apenas um valor.

Não inclua Sentinela valores nas enumerações.

Sentinela valores são usados para identificar os limites de valores na enumeração. Normalmente, um valor de Sentinela é usado em verificações de intervalo e não é um valor de dados válido. O exemplo de código a seguir define uma enumeração com um valor de Sentinela.

Public Enum Furniture

    Desk
    Chair
    Lamp
    Rug
    LastValue

End Enum

public enum Furniture
{
    Desk,
    Chair,
    Lamp,
    Rug,
    LastValue   // The sentinel value.
}

Fornecer um valor zero em enumerações simples.

Se possível, nomeie esse valor de None. If None é não apropriado, atribua o valor zero ao valor mais comumente usado (o padrão).

Considere o uso de sistema.Int32 (o tipo de dados padrão na maioria das linguagens de programação) sistema autônomo o tipo de dados subjacente de uma enumeração, a menos que uma das seguintes opções for verdadeira:

  • A enumeração é uma enumeração de sinalizadores e você tiver mais de 32 sinalizadores ou espera ter muito mais no futuro.

  • O tipo precisa ser diferente de Int32 Para mais fácil interoperabilidade com código não gerenciado esperando enumerações de dimensionar diferente.

  • Um tipo subjacente menores resultaria em uma economia substancial no espaço. Se você espera uma enumeração para ser usado principalmente sistema autônomo um argumento para o fluxo de controle, o dimensionar faz diferença pouco. A economia de dimensionar pode ser significativa se:

    • Você espera que a enumeração de ser usado sistema autônomo um campo em uma classe ou estrutura instanciada com muita freqüência.

    • Você espera que os usuários criem matrizes grandes ou coleções de instâncias de enumeração.

    • Você espera que um grande número de instâncias de enumeração para ser serializado.

Nome enumerações sinalizadores com substantivos no plural ou frases substantivo.Enumerações simples devem ser nomeadas com substantivos singulares ou frases substantivo.

Não se estendem sistema.Enum diretamente.

Alguns compiladores não permitem que você estender Enum a menos que você faça indiretamente usando a palavra-chave específicas do linguagem para a geração de enumerações.

Partes direitos autorais 2005 Microsoft Corporation. Todos os direitos reservados.

Partes direitos autorais Addison-Wesley Corporation. Todos os direitos reservados.

Para obter mais informações sobre diretrizes de design, consulte a "diretrizes de design do estrutura: Catálogo de convenções, idiomas e padrões para bibliotecas do .NET reutilizável"Krzysztof Cwalina e Brad Abrams, publicado pela Addison-Wesley, 2005.

Consulte também

Conceitos

Criar enumerações de sinalizadores

Adicionar valores a enumerações

Outros recursos

Diretrizes de design de tipo

Diretrizes de Design para desenvolvimento bibliotecas de classe