Tiny Types são importantes por diversos fatores dos quais me lembro de: enriquecimento do domínio, forçagem de tipagem, clientes das classes perdem o poder de errar no uso incorreto da ordem dos parâmetros de algum método.
O que é um tiny type?
Sabe aquelas propriedades que costumamos definir como simplesmente String (nome, sobrenome, cpf, cep) , alguns desses atributos podem acabar se transformando em um tipo próprio.... os tiny types.
Definição: São objetos pequeninos (dahhh) que normalmente são imutáveis e seguem o padrão VO (de Martin Fowler), podem parecer chatos no inícios para alguns mas se mostram poderosos com o passar do tempo.
E as vantagens??
Enriquecimento do domínio: new Pessoa(new Nome("Luiz"), new Sobrenome("Inacio"))
Diminuição de erros: tendo uma classe qualquer Pessoa com atributos nome e sobrenome como String poderia nos permitir fazer coisas como: new Pessoa("Inacio","Luiz")
E as desvantagens???
Claramente você terá mais trabalho para definir e até mesmo mapear (seja o @Embebbed do padrão JPA ou seu mapeador próprio ou seu framework predileto para mapeamento ORM) esses mini-tipos que serão incorporados a um objeto maior.
ps: inspirado (entre outros...) pelo post da caelum.
O que é um tiny type?
Sabe aquelas propriedades que costumamos definir como simplesmente String (nome, sobrenome, cpf, cep) , alguns desses atributos podem acabar se transformando em um tipo próprio.... os tiny types.
Definição: São objetos pequeninos (dahhh) que normalmente são imutáveis e seguem o padrão VO (de Martin Fowler), podem parecer chatos no inícios para alguns mas se mostram poderosos com o passar do tempo.
E as vantagens??
Enriquecimento do domínio: new Pessoa(new Nome("Luiz"), new Sobrenome("Inacio"))
Diminuição de erros: tendo uma classe qualquer Pessoa com atributos nome e sobrenome como String poderia nos permitir fazer coisas como: new Pessoa("Inacio","Luiz")
E as desvantagens???
Claramente você terá mais trabalho para definir e até mesmo mapear (seja o @Embebbed do padrão JPA ou seu mapeador próprio ou seu framework predileto para mapeamento ORM) esses mini-tipos que serão incorporados a um objeto maior.
ps: inspirado (entre outros...) pelo post da caelum.
Nenhum comentário:
Postar um comentário