DDD parece complicado até você entender o problema que ele tenta resolver
Leia. Curta. Comente. Compartilhe.
...
Entenda de forma simples como o DDD ajuda a aproximar o código das regras de negócio e por que domínio é muito mais do que uma pasta dentro do projeto.
...
DDD
Quando você encontra DDD (Domain Driven Design) pela primeira vez, pode parecer que alguém decidiu complicar o desenvolvimento de propósito.
Domain. Entity. Value Object. Aggregate. Repository. Bounded Context...
Calma.
Antes de decorar todos esses nomes, existe uma ideia muito mais importante:
DDD ajuda você a construir o software pensando primeiro no problema do negócio.
E isso fica bem mais fácil de entender com comida.
Imagine que você está criando o sistema de uma pizzaria
Você começa animado:
Cliente
Pizza
Pedido
Pagamento
Até aqui, tranquilo.
Mas então aparecem as regras:
Um pedido precisa ter pelo menos uma pizza.
Uma pizza família pode ter no máximo três sabores.
Um cupom vencido não pode dar desconto.
Um pedido só pode sair para entrega depois do pagamento.
Pronto.
Agora você não está mais apenas cadastrando informações.
Você está lidando com regras de negócio.
E é justamente aí que o DDD começa a fazer sentido.
Afinal, o que é domínio?
De forma simples, domínio é o universo do problema que seu sistema precisa resolver.
Se você trabalha em uma pizzaria, vai ouvir coisas como:
Pedido
Entrega
Cupom
Pagamento
Cliente
Em um banco:
Conta
Saldo
Transferência
Parcela
Empréstimo
Em uma clínica:
Paciente
Consulta
Médico
Agendamento
Cada negócio tem sua própria linguagem e suas próprias regras.
O DDD tenta fazer com que o código converse com esse mundo real.
O código começa a contar a história do negócio
Imagine encontrar isso:
pedido.enviar();
Parece simples.
Mas dentro dessa ação podem existir regras:
O pedido foi pago?
Tem endereço de entrega?
Ele ainda não foi cancelado?
Se alguma dessas condições não for atendida, talvez aquele pedido não possa ser enviado.
A regra pertence ao negócio.
Não deveria ficar escondida aleatoriamente em algum canto do sistema como aquele pote misterioso no fundo da geladeira que ninguém sabe há quanto tempo está lá.
DDD não é organizar pastas bonitas
Esse é um ponto importante.
Criar:
domain/
application/
infrastructure/
não significa automaticamente que você está usando DDD.
Você pode ter as pastas mais bonitas do GitHub e ainda espalhar as regras de negócio pelo projeto inteiro.
DDD está muito mais relacionado a entender o negócio e representar suas regras no software do que simplesmente seguir uma estrutura de diretórios.
3 coisas para lembrar quando estudar DDD
1. Entenda o negócio antes do código
Antes de sair criando classes, pergunte:
Quais são as regras desse sistema?
Às vezes uma conversa sobre o negócio vale mais do que criar dez classes no automático.
2. Use nomes que façam sentido
Se no negócio todo mundo chama algo de Pedido, mas no código você resolveu chamar de ProcessObjectFinalV2, talvez alguma coisa tenha saído do caminho.
A linguagem do código deve ajudar a entender o negócio.
3. Não tente aprender todo o DDD de uma vez
DDD tem vários conceitos importantes.
Mas tentar decorar todos antes de entender domínio e regras de negócio é como estudar todas as placas de trânsito antes de aprender para que serve o volante.
Comece pelo problema.
No fim, DDD começa com uma pergunta simples
Quando você tira os nomes complicados da frente, a ideia central fica muito mais amigável.
Em vez de começar pensando:
“Quais classes eu preciso criar?”
experimente começar com:
“Quais regras esse negócio precisa respeitar?”
A partir daí, seu código deixa de ser apenas um monte de classes conversando entre si e começa a representar como aquele negócio realmente funciona.
E talvez DDD não pareça mais aquele monstro que apareceu no primeiro tutorial.
>> E você, quando ouviu falar de DDD pela primeira vez também achou que precisava decorar um dicionário inteiro de termos?
Indicação de livro
Domain-Driven Design: Tackling Complexity in the Heart of Software
Autor: Eric Evans
É uma das principais referências sobre DDD. Não é exatamente uma leitura de domingo na rede, mas é um ótimo livro para consultar aos poucos conforme os conceitos começarem a aparecer nos seus estudos.



