Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Conceito de DDD

Opa, professor Kako!

Primeiramente, quero agradecer pela aula sobre métodos de desenvolvimento! Sua didática sempre torna conceitos complexos mais acessíveis, e isso é algo que valorizo muito nos cursos aqui da Alura. Nessa formação flutter, sempre tenho a grata supresa quando vejo que você será o professor!

Bom, oo pesquisar mais sobre DDD após a aula, encontrei algumas diferenças entre a abordagem clássica (do livro de Eric Evans) e o que costumamos praticar em projetos ágeis. Você poderia nos ajudar a esclarecer como adaptamos esses princípios para o contexto do Flutter?

No livro, o DDD enfatiza:

  • Modelagem colaborativa do domínio (com linguagem ubíqua)
  • Separação explícita de camadas arquiteturais desde o início
  • Testes de domínio como parte do processo de modelagem

Já em aplicativos menores, muitas vezes priorizamos MVP com prototipagem rápida. Como equilibrar essas perspectivas na prática? Existe espaço para uma implementação 'DDD Light' em projetos Flutter sem complexidade excessiva?

Sua experiência seria extremamente valiosa para entendermos quando e como aplicar cada abordagem. Agradeço novamente pelo excelente conteúdo!

1 resposta
solução!

Olá, Samuel, como vai?

Sua observação foi muito pertinente. O DDD original, descrito por Eric Evans, realmente foca em projetos complexos, com equipes maiores, domínio rico e forte colaboração entre áreas técnicas e de negócio. Já o que costumamos ver em projetos menores — especialmente em apps Flutter — é uma adaptação mais leve desses princípios, focada na praticidade.

No Flutter, quando falamos em aplicar DDD, geralmente estamos nos referindo a uma abordagem mais pragmática, que mantém a ideia central de "domínio guiando o design", mas com menos rigidez nas camadas e menor formalidade na modelagem.

Um exemplo de “DDD Light” seria:

  • Criar uma camada de domínio simples com classes que representem entidades e regras de negócio (por exemplo, Cliente, Transacao, Moeda), mesmo que elas não estejam separadas em pacotes distintos no início.
  • Usar uma linguagem ubíqua dentro da equipe, mesmo que informal — ou seja, todos se referirem aos conceitos do domínio de forma consistente.
  • Isolar parte da lógica de negócio do Flutter em services ou use cases, ainda que a estrutura não siga todos os padrões de camadas (como domain, application, infrastructure).
  • Prototipar primeiro, mas aos poucos refatorar com mais atenção ao domínio, conforme o app cresce.

Equilibrar essas abordagens envolve entender o tamanho e a complexidade do projeto. Para apps pequenos, começar simples e só introduzir mais estrutura quando necessário evita sobreengenharia. A chave é não abrir mão da clareza no código e manter o foco no domínio, mesmo com uma estrutura mais enxuta.

Espero que isso te ajude a visualizar como essas ideias se adaptam no mundo Flutter. Qualquer outra dúvida, o fórum está sempre à disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!