Domain-Driven Design é uma furada?

É verdade, como o J2EE (agora JEE) nos condiciona a programaar proceduralmente.
E vai questionar com os “Arquitetos” BAM-BAM-BAM para vc ver. Vc apanha.

[quote=Leonardo3001]Já ouvi falar desse tal de DDD (Domain-Driven Design), inclusive de gente daqui do fórum, e achei a idéia bastante interessante.

Porém, no blog In Relation To, pelo menos nos últimos cinco posts (http://in.relation.to/Bloggers/SilliestPersistencePostEver , http://in.relation.to/Bloggers/WhatMethodsBelongOnAnEntity , http://in.relation.to/Bloggers/RepositoryPatternVsTransparentPersistence , http://in.relation.to/Bloggers/OnReligionWhyImAnIgnorantCProgrammerAndDontKnowWhatAnObjectIs , http://in.relation.to/Bloggers/StillConfusedAboutRepositories), Gavin King e companhia fazem críticas a essa arquitetura.

Aí fiquei na dúvida, será que DDD é tão bom assim?

[/quote]

Só para constar…

Gavin King é o criador do Hibernate. Hoje, ele tem outro filho (o Seam).

Christian Bauer, atualmente, é o maior contribuidor do projeto Hibernate.

Esses caras devem ter alguma razão no que falam, não!?

[quote] Só para constar…

Gavin King é o criador do Hibernate. Hoje, ele tem outro filho (o Seam).

Christian Bauer, atualmente, é o maior contribuidor do projeto Hibernate.

Esses caras devem ter alguma razão no que falam, não!?[/quote]

Entao ta explicado, a praia deles eh outra.

De qqr forma, seja la quem for, nao se deve criticar algo sem nunca ter lido.

[quote=YvGa][quote] Só para constar…

Gavin King é o criador do Hibernate. Hoje, ele tem outro filho (o Seam).

Christian Bauer, atualmente, é o maior contribuidor do projeto Hibernate.

Esses caras devem ter alguma razão no que falam, não!?[/quote]

Entao ta explicado, a praia deles eh outra.

De qqr forma, seja la quem for, nao se deve criticar algo sem nunca ter lido.[/quote]

Pelo que eu li nos posts até que eles entendem bem de DDD, pelo menos mais do que a média por aqui… :wink:

Ja pelo q eu entendi alguns disseram nem ter lido.

Pra eles terem escrito uma ferramenta como hibernate a experiencia deles deve ser muito grande em DB, ou seja, essa é a especialidade deles, talvez nao tenham tanta assim em arquitetura.

Mas enfim, o problema eh o conceito do Repository q o pessoal perde. Eles reclamam dizendo q eh igual ao DAO e q entao nao ha necessidade. Primeiro q segundo DDD repositorios sao concretos, nao se abstrai, nao tem generico, nem reutilizavel. A responsabilidade dele eh o seu agregate e nada mais. Mudam as regras, mudam os repositorios. Claro q tem muita gente usando eles como DAO, mas nao eh esse o intuito.

Vale lembrar tambem q o Eric Evans sequer menciona o pattern DAO no livro, o repositorio ta la, por tras dele se vc vai usar DAO, Hibernate diretamente, JDBC ou qqr outro pattern q possa surgir, eh opcao sua e nao invalida o uso do repositorio. Repositorio nao eh mecanismo de persistencia, eh objeto de dominio.

Pelo menos foi assim q eu entendi, a nao ser q eu tenha entendido errado, o q nao eh incomun. :slight_smile:

Não interessa muito as ferramentas que o camarada criou para poder criticar DDD. O fato é que DDD é OO. Ao meu ver, dizer que DDD não funfa é o mesmo que dizer que OO é utopia.

Se DDD não for possível em java do jeito que gostariamos, linguagens mais interessantes é o que não faltam. :wink:

[quote=rodrigoy][quote=Thiago Senna]
Quanto a Microsoft dar suporte a DDD, acho que isso ainda não rola. Talvez o DDD seja um vocabulário de alguns bons programadores .Net que geram conteúdo sobre o assunto. :wink:
[/quote]

Pode ser isso.

Vejo o Alt.Net ganhando força lá fora, mas aqui são poucos que olham a plataforma de maneira independente da M$.
[/quote]

Alt.Net? Não conhecia este termo. Mas nas caças por conteúdo deu pra entender um pouco o que é este tal de “Alt.Net”.

[quote=“the ?bee log”]What does it mean to be to be ALT.NET? In short it signifies:

  1. You?re the type of developer who uses what works while keeping an eye out for a better way.
  2. You reach outside the mainstream to adopt the best of any community: Open Source, Agile, Java, Ruby, etc.
  3. You?re not content with the status quo. Things can always be better expressed, more elegant and simple, more mutable, higher quality, etc.
  4. You know tools are great, but they only take you so far. It?s the principles and knowledge that really matter. The best tools are those that embed the knowledge and encourage the principles (e.g. Resharper.)
    [/quote]

http://laribee.com/blog/2007/04/10/altnet/

Será que é muito difícil instalar o visual studio? rsrs…

[quote=Thiago Senna] Ao meu ver, dizer que DDD não funfa é o mesmo que dizer que OO é utopia.

Se DDD não for possível em java do jeito que gostariamos, linguagens mais interessantes é o que não faltam. ;)[/quote]

Alguém disse que DDD não funciona com Hibernate/Java!? Vamos fazer DDD em Cobol!!!

É possível criar um modelo rico com Hibernate/Java. A ausência de um Repository não restringe o fato de se ter DDD.

Mais uma vez vou repetir:

Respondendo a pergunta do tópico:

Não. DDD não é uma furada, pelo menos quando vc sabe utilizá-la bem com os frameworks que vc escolheu.

Linus Torvalds criou um sistema onde a maioria das instalações de C++. Java, Subversion e CVS roda. Ele é a referência máxima quanto à este sistema. pergunte ao Linus o que ele acha de Java, CVS, C++ ou Subversion.

O problema de Domain-Driven Design é que o livro referência é bem difícil. Tem pessoas nesta thread que já falaram várias besteira sobre ele em outro tópico, se agarram a um ou outro parágrafo sem entender o todo (no caso em específico do blog e da pessoa desta thread sem sequer LER o todo).

Gente, quando eu li todos esses posts não tive a impressão de ninguém atacando o DDD. Foi mais um ActiveRecord x DataMapper.

Não sei de onde vocês tiraram esse flame, a única coisa que o Gavin disse foi que ele ainda não entendia ainda muito bem a necessidade desses tais “Repositórios”. No fim, ele acabou percebendo que os Repositórios são o que ele chama de Daos.

[quote=Fabio Kung]Gente, quando eu li todos esses posts não tive a impressão de ninguém atacando o DDD. Foi mais um ActiveRecord x DataMapper.

Não sei de onde vocês tiraram esse flame, a única coisa que o Gavin disse foi que ele ainda não entendia ainda muito bem a necessidade desses tais “Repositórios”. No fim, ele acabou percebendo que os Repositórios são o que ele chama de Daos.[/quote]

Exatamente , apesar das intrigas da oposição…

[quote=O cara mais chato do GUJ]
"Magina, o Gavin não leu o livro todo para ter o direito de criticar…

Aliás, quem é o Gavin pra dizer alguma coisa!?"[/quote]

Engraçado é ler no próprio livro do Gavin e do Bauer:

Our domain model is a rich object model, with complex associations,
interactions, and inheritance relationships. An interesting and detailed discussion
of object-oriented techniques for working with domain models can be found in
Patterns of Enterprise Application Architecture [Fowler 2003] or in Domain-Driven
Design [Evans 2004].

Hibernate in Action, 2005, Pág. 62

Rodrigo,

Sou desenvolvedor .Net a maior parte do tempo (Java tbm) e concordo 100% com isso. Eu pessoalmente luto bastante pela utilização de DDD nos projetos que participo. Na empresa na qual era responsável pelo desenvolvimento apliquei DDD e fui muito feliz usando NHibernate (Repository), Windson Castle (Injeção de dependencia)…

Principalmente pq os dois projetos tinham regras de negócio bastante complexas, assim nada melhor do que um “Domain Model” bem feito.

Entretanto, em algumas empresas isso dói muito pra equipe. O BOLOVO com entidades anêmicas seguem firme e forte. (e é pq .Net que não teve aquela coisa chamada EJB 2… sei o q aconteceu não.)

Minha esperança é que quando enfim a MS lance o Entity Framework as coisas mudem. (Tava até pensando em abandonar a causa).

Mais uma discução sem prositos, que nao levou a lugar. Quem nao gosta de DDD vai continuar nao gostando, quem gosta vai continuar a usar. novamente podemos aproveitar um ou dois post. Mais uma coisa, vai ter aqueles q acham q usam DDD, e aqueles q so usam pq esta na moda. Existe tantas outras coisas para discutir e se chegar a uma conclusao e ficamos sempre nas mesmas discuções.