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.
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.
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
Compartilhar
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.
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.