Bloaters.
Às vezes, diferentes partes do código contêm grupos idênticos de variáveis (como parâmetros para conexão com um banco de dados). Esses aglomerados devem ser transformados em suas próprias classes.
Uma classe contém muitos campos/métodos/linhas de código.
Um método contém linhas de código demais. Em geral, qualquer método com mais de dez linhas deve começar a levantar suspeitas.
Mais de três ou quatro parâmetros para um método.
Uso de primitivos em vez de pequenos objetos para tarefas simples (como moeda, intervalos, strings especiais para números de telefone etc.)Uso de constantes para codificar informação (como uma constante USER_ADMIN_ROLE = 1 para se referir a usuários com direitos de administrador.)Uso de constantes de string como nomes de campos para uso em arrays de dados.