Voltar
🎨 Design de Código

Primitive Obsession

Usar tipos primitivos quando deveria criar tipos específicos

Se um dado tem lógica própria, crie um tipo para ele.

🎨
👶

Explicando como se você tivesse 5 anos

Agora sim! 🎉

Em vez de só falar "aquele número ali", dê um nome: "seu telefone", "sua idade", "o preço". Fica mais claro!

⚠️
🚩

Por que isso é uma Red Flag?

Atenção ao problema! ⚡

Usar primitivos para conceitos de domínio espalha validação e lógica por todo código, elimina type safety, e torna bugs mais prováveis (passar CPF onde deveria ser telefone). Indica falta de modelagem de domínio. A oportunidade está em criar value objects ou tipos específicos que encapsulam validação e comportamento, tornando o código mais seguro e expressivo.

Compartilhar:

História

Martin Fowler identificou este code smell ao observar que desenvolvedores frequentemente usam strings e números para representar conceitos do domínio que mereciam tipos próprios.

Quem Inventou

Martin Fowler

Ano: 1999

Para que serve

Criar tipos específicos para conceitos do domínio ao invés de usar primitivos.

Explicação Detalhada

Primitive Obsession é usar tipos primitivos (string, int, etc.) para representar conceitos do domínio que têm sua própria lógica e regras. Exemplo: usar string para CPF, Email, CEP. Problemas: validação espalhada, sem type safety, difícil de mudar. Solução: criar tipos específicos (classes ou value objects) que encapsulam a validação e comportamento. CPF vira uma classe com validação interna, não apenas uma string.