cmoscoso:
Oi,
Tenho tido duvidas ao classficar alguns objetos de domínio de acordo com as idéias de Eric Evans, digo em relação a classificacao de um objeto como entidade x value object.
Estou ciente que de acordo com o tipo de projeto você pode ter mais ou menos value objects, tipo alguns projetos são só value objects do outro lado existem aqueles basicamente CRUDs e por isso com mais entidades, O meu caso é um projeto enterprise/comercial que apesar de não ter uma carga grande de acessos possui requisitos bem específicos, não são CRUD apenas… Dito isso, mais alguém aqui possui tal dificuldade? é uma boa coisa considerar aqueles objetos que você não tem certeza como value objects “até que se prove o contrário”? ou seja, até que fique claro que ele deveria ser uma entidade.
Apesar de achar trabalhoso implementar imutabilidade naqueles value objects com estrutura mais complexa eu gosto de trabalhar com eles porque tem um ciclo de vida simples se comparadas com entidades, por isso também são mais “previsíveis”.
Mais alguém acredita que seu modelo deveria ter mais value objects?
O numero de objetos no modelo não é medida de nada, por isso não se preocupe com o numero.
Agora, a qualidade dos objetos pode ser influenciada pelo numero. Tlv vc divida em muitas partes o seu modelo quando não seria necessário ou não divida o suficiente quando é.
Os VO são imutáveis porque representam valores. Se a imutabilidade deles é um problema tlv eles não sejam um VO. Por exemplo, é dificil imaginar um VO que seja um Grafo complexo. Poderá até ser, mas é preciso uma muito boa razão para isso. Normalmente o VO encapsula algumas propriedades e muitos métodos de mutabilidade. VEjam-se as classes de data do Joda-Time e outros … a data em si são 3 numeros, isso é o VO, mas operações sobre esses numeros têm regras complexas. Tão complexas que precisam ser encapsuladas em outros objetos (Chronology). Um projeto pode ter este tipo de objeto complexo (normalmente tem já que é ai que está o “negocio”) e é preciso separar o objeto que transporta os dados ,o VO, daqueles que dizem como operar sobre os dados. Mas cuidado porque CRUD não é , nem nunca será , um a rega de negócio. É apenas uma necessidade do sistema.
è verdade que tem que analizar bem os seus VO, não os confundir com DTO e não assumir que eles são necessários para o CRUD.