DEV Community

Java Efetivo (livro)
Java Efetivo (livro)

Posted on

Item 39: Prefira as anotações aos padrões de nomenclatura

Problemas com Padrões de Nomenclatura:

Erros Tipográficos:

  • Falhas silenciosas por nomes incorretos (ex.: tsetSafetyOverride em vez de testSafetyOverride).

Uso Indevido:

  • Não há como garantir que nomes sejam usados apenas nos elementos certos (ex.: nomear uma classe como TestSafetyMechanisms).

Associação de Parâmetros:
Dificuldade em associar parâmetros aos elementos do programa (ex.: codificar tipos de exceção nos nomes dos métodos de teste).

Solução com Anotações:
Exemplo de Anotação: Criação de uma anotação Test para métodos de teste.

Meta-anotações:
- @Retention(RetentionPolicy.RUNTIME): Manter as anotações em tempo de execução.
- @Target(ElementType.METHOD): Anotação permitida apenas em métodos.

Image description

Uso Prático:

  • A anotação Test marca métodos estáticos sem parâmetros para testes automáticos que falham se lançarem exceções.
  • Exemplo: Classe Sample com métodos anotados como testes (alguns válidos, alguns inválidos).

Image description

Ferramenta de Teste Simples:

  • Teste Runner: Executa métodos anotados com Test reflexivamente.
  • Usa Method.invoke e isAnnotationPresent para detectar e executar métodos anotados.
  • Captura e relata exceções lançadas pelos métodos de teste.

Image description

Anotações com Parâmetros:

  • Teste com Exceções: Criação de uma anotação ExceptionTest para testes que passam se lançarem uma exceção específica.
  • Tipo de Parâmetro: Class<? extends Throwable> para especificar o tipo de exceção esperada.

Image description

Image description

Modificação do Teste Runner:

  • Adiciona suporte para ExceptionTest.
  • Verifica se a exceção lançada é do tipo correto.

Image description

Anotações Repetíveis:

  • Uso de Arrays:
  • Mudança do parâmetro de ExceptionTest para um array de Class.

Image description

Image description

Anotações @Repeatable:
Permite anotar o mesmo elemento várias vezes com a mesma anotação.
Exemplo: @Repeatable na anotação ExceptionTest.

Processamento de Anotações Repetíveis:

  • Cuidado no Processamento:
  • Uso de getAnnotationsByType para acessar anotações repetidas e não repetidas.
  • Verificação de ambos os tipos de anotação (individual e contêiner).

Conclusão:
Vantagens das Anotações:

  • Superioridade das anotações sobre os padrões de nomenclatura para fornecer informações adicionais ao código-fonte.
  • Incentivo ao uso de anotações predefinidas e fornecidas por ferramentas.

Importância das Anotações:
Para Programadores:

  • Programadores devem utilizar anotações predefinidas e fornecidas por IDEs ou ferramentas de análise estática para melhorar a qualidade das informações de diagnóstico.
  • Este resumo destaca os principais pontos discutidos no trecho sobre a evolução do uso de anotações para substituir os padrões de nomenclatura tradicionais, abordando suas vantagens e fornecendo exemplos práticos e sugestões de implementação.

Top comments (0)