DEV Community

Java Efetivo (livro)
Java Efetivo (livro)

Posted on

Item 35: Use os campos de instância em vez dos valores ordinais

1. Problemas com o Uso de Ordinais:

  • Manutenção Difícil:
    Reordenar as constantes de enum quebra a lógica dependente do método ordinal().

  • Limitações de Valor Int:
    Não é possível associar múltiplas constantes ao mesmo valor int.

  • Constantes Falsas Necessárias:
    Para valores int intermediários sem denominação, você precisa adicionar constantes não representativas.

2. Exemplo de Problema:

Image description

  • Reordenar Constantes:
    Quebraria numberOfMusicians().

  • Adicionar Constantes:
    Impossível sem conflitos de valores.

3. Solução Recomendada:

  • Use Campos de Instância: Image description

4. Benefícios da Solução:

  • Flexibilidade:
    Permite associar múltiplas constantes ao mesmo valor int.
    Manutenção Simplificada: Reordenar constantes ou adicionar novas não quebra a lógica existente.

  • Evita Constantes Falsas:
    Não há necessidade de adicionar valores intermediários desnecessários.

5. Recomendação Geral:

  • Evitar Ordinais:
    A especificação do Enum sugere que o método ordinal() deve ser usado principalmente por estruturas de dados baseadas em enums, como EnumSet e EnumMap.

  • Uso Restrito:
    Se não estiver criando tais estruturas, é melhor evitar o método ordinal().

Conclusão:
Utilize campos de instância em enums para armazenar valores associados, garantindo maior flexibilidade, facilidade de manutenção e evitando a criação de constantes artificiais.

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay