Odores e Heurísticas - Java
Os principais pontos abordados incluem:
Uso Adequado de Exceções: Prefira exceções a códigos de erro, e use exceções verificadas (checked exceptions) apenas quando necessário.
Evitar Uso Excessivo de null: Sempre que possível, retorne objetos vazios ou use Optional para evitar verificações constantes de null.
Organização de Classes e Métodos: Métodos e variáveis devem seguir uma ordem lógica dentro das classes, agrupando conceitos relacionados para melhorar a legibilidade.
Boas Práticas com Coleções: Prefira interfaces como List ou Set ao invés de classes concretas (ArrayList, HashSet), para maior flexibilidade.
Evitar Dependências em Construtores: Quando um objeto precisa de muitas dependências, considere o uso de factories ou builders para criar instâncias.
Uso Adequado de Concorrência: Utilize classes do pacote java.util.concurrent para evitar problemas com threads e sincronização.
Preferência por Composição ao Invés de Herança: A composição é mais flexível e evita os problemas comuns da herança excessiva.
Evitar getters e setters Desnecessários: Expor diretamente os campos de uma classe pode levar a um acoplamento indesejado. Sempre que possível, encapsule a lógica dentro da própria classe.