Pergunta

Googling "Que tipo de aplicações é DDD adequado para?" me deu a seguinte resposta:

Provavelmente 95% de todas as aplicações de software cair na “não tão bom para usando DDD” categorias. (Veja o artigo )

Assim que é todo o alarido sobre?!?

A aplicação que estou trabalhando é principalmente contém alguma lógica de negócios e regras a aplicar centradas em dados, mas ainda. Seria desperdício de tempo para começar a aplicar técnicas DDD? Am I melhor usar um mais convencional Data Access Layer, um modelo de Poços e uma camada de lógica de negócios? Ou para indicá-lo de forma diferente - o que é uma boa alternativa para DDD

Foi útil?

Solução

Muitos desenvolvedores que pensam DDD é útil para a sua queda projeto na armadilha que eles pensam que seu trabalho é todo o código sobre está escrevendo. Este não é o caso. O trabalho de um desenvolvedor é sobre a realização funcionalidade para um problema pode ser resolvido através de software. Isto resulta na conclusão de que escrever o código não é o começo do que um desenvolvedor está fazendo, mas o fim: o código é o resultado de todo o processo antes do código é escrito.

DDD não é sobre como escrever código, não é um processo de 10 etapas turn-key para obter grande software, é sobre todo o processo antes do código é escrito, é sobre a obtenção de uma visão de que o problema está em causa, o que / que participa de que fluxos de informação e o que esses elementos se parecem, como eles se relacionam um ao outro etc. etc. na verdade, a parte mais importante do DDD é criar uma linguagem que faz com que as conversas entre especialistas de domínio e desenvolvedores possíveis sem erros de interpretação . Este é o 'Ubiquitous linguagem' fala Evans cerca. Ele na verdade faz com que todo o processo antes de o código é escrito um processo que deixa pouco a ser adivinhada, as coisas são claras e simples. (Esse é o objetivo).

O problema com 'Como funciona o DDD na prática' e 'alguém poderia me dar um exemplo de como eu escrever código com DDD? e similares é realmente proveniente do fato de que as pessoas pedindo este tipo de perguntas concentrar em escrever código, mas não tenho idéia por que eles estão escrevendo este código e não outro código. I.o.w .: se você perceber que DDD é sobre descobrir o que você escrever como funcionalidade e por que, as coisas caem no lugar. COMO você está escrevendo esse código, que é até você. Mas, como disse: isso não é o maior problema mais, à medida que até então já sabe o que você tem para escrever e porquê.

Outras dicas

Você sabe, às vezes a 5% faz mais dinheiro do que todos os outros 95% -. É por isso que DDD existe

é para grande sistema complexo específico.

Desculpe, mas se DDD eram apenas uma maneira de pensar como diz Frans Bouma, então não recomendo coisas como Persistence Ignorance. Esta é demitir outros como desenvolvedores pouco underclass.

PI, para o qual DDD tem pelo menos um viés, é uma escolha de arquitetura. Não é uma forma de pensar mais; Já é algo que está sendo servido, com a maioria das vezes advertências demasiado vago para ser de alguma utilidade:. "não é adequado para tudo"

Mas decidir ir a maneira PI ou não é um desafio em si mesmo, e você não pode chamar nomes alguém ( "um codificador") se ele se sente desconfortável com isso.

Tome um pacote de ERP com tudo sobre o lugar uma MS Access-como interface: grades com totais em execução, colunas de auto-atualização e pageless do desdobramento em um 100 000 registos. Claramente uma abordagem DDD é adequado para pensar em como ir sobre este aplicativo. Mas, em anos, eu nunca vi ninguém - nem nos livros nem on-line, indo embora evidências apoiado explicações, deixe exemplos de código vida real sozinho, de como PI poderia lidar com este onipresente situação para quem deseja entregar < strong> aplicativos da classe comercial e experiências de usuário .

Não quero ficar religiosa sobre este assunto. DDD e DAL defensores tendem a ser excessivamente religioso e pode afastar aqueles que têm sido mordido uma vez, mas que são / foram open-minded. Muitos só querem confrontar experiências da vida real (ou seja, acho), e não ser servido com apenas gatos, carros, e Ordem básico / OrdersItems (ou seja pobre CODE) para apoiar a pregação.

Aqui está uma pergunta muito semelhante: você permitir que a camada web para acessar o DAL diretamente?

Eu uso DDD para todos os meus projetos. Nas aplicações menores alguns dos conceitos não se aplicam, mas acho que muitos dos aspectos são aplicáveis ??em todos os projectos, independentemente do tamanho.

DDD é sobre o software que será mantida por um tempo. Para mim, isso significa que ele precisa para expressar idéias que irão mudar com o domínio. Claro que um aplicativo simples pode ser perfeito para um curto prazo de entrega e tempo de implementação curto. No entanto, se você precisa para crescer o software, em seguida, princípios DDD irá ajudar imensamente. DDD pode ser difícil frente para cima, mas uma vez que você começa a idéia da linguagem ubíqua e as preocupações de separação, em seguida, as coisas começam a se tornar fácil.

Se você ler o artigo um pouco mais, você vê o seguinte:

Para a 5% de aplicações onde DDD é uma boa opção, é um ajuste muito bom. Para essas situações, DDD vai ajudar você quebrar uma noz muito difícil. Aqui, DDD pode ser a bala de prata para que lobisomem que seu gerente apenas pontiagudo para sua mesa.

É por isso que o alarido sobre isso.

  • Como a sua aplicação é principalmente centrada em dados, talvez sua arquitetura poderia ser principalmente convencional.

  • Para os aspectos onde você tem mais lógica e potenciais objetos de domínio ou de valor, talvez você possa aproveitar algumas das idéias DDD para organizar o código.

  • Em geral, a "boa alternativa" é manter as coisas o mais simples possível, usar os conceitos DDD onde útil, e não se desnecessariamente coisas complicar, como o artigo aconselha.

Estou começando um projeto semelhante agora, é uma mistura de manipulação de dados e mais áreas impulsionadas lógica / algoritmo. Eu mesma forma como a tomar as partes do DDD que irão beneficiar o projeto, mas não tente forçá-lo sobre as áreas onde pode ser contra-produtivo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top