Obsessão por Primitivos.
Usam-se primitivos em vez de pequenos objetos para tarefas simples (como moeda, intervalos ou strings especiais para números de telefone), constantes para codificar informações (como USER_ADMIN_ROLE = 1 para usuários com direitos de administrador) e constantes de string como nomes de campos em arrays de dados.
##Sinais e sintomas
-
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 = 1para se referir a usuários com direitos de administrador.) -
Uso de constantes de string como nomes de campos para uso em arrays de dados.

void register(String email, String phone, String zip, int year, int month, int day) {
if (!email.contains("@")) throw new IllegalArgumentException("email");
if (phone.length() < 7) throw new IllegalArgumentException("phone");
}##Causas do problema
Como a maioria dos outros maus cheiros, as obsessões por primitivos nascem em momentos de fraqueza. “É só um campo para guardar alguns dados!”, disse o programador. Criar um campo primitivo é muito mais fácil do que fazer uma classe inteiramente nova, certo? E assim foi feito. Depois outro campo foi necessário e adicionado da mesma maneira. E eis que a classe ficou enorme e difícil de manejar.
Os primitivos costumam ser usados para “simular” tipos. Assim, em vez de um tipo de dado separado, você tem um conjunto de números ou strings que formam a lista de valores permitidos para alguma entidade. Em seguida, nomes fáceis de entender são dados a esses números e strings específicos por meio de constantes, e é por isso que eles se espalham por todo lado.
Outro exemplo de uso ruim de primitivos é a simulação de campos. A classe contém um grande array de dados variados, e constantes de string (que são especificadas na classe) são usadas como índices do array para obter esses dados.
##Tratamento
##Benefícios
-
O código fica mais flexível graças ao uso de objetos em vez de primitivos.
-
Melhor compreensão e organização do código. As operações sobre determinados dados ficam no mesmo lugar, em vez de espalhadas. Chega de adivinhar o motivo de todas essas constantes estranhas e por que elas estão em um array.
-
Mais facilidade para encontrar código duplicado.