Closed NicolasPereira closed 2 years ago
Creio que seja uma boa migrarmos pra essa estrutura, já que os dominios são bem distintos e o código já foi planejado pra isso.
Podemos terminar as endpoints, e antes de dar a release subimos um PR pra organizar a nova estrutura. O que acha?
Concordo, acredito que podemos montar todos endpoints e garantir o funcionamento, até mesmo pra vcs lançarem a Feature ai na Liuv e dps organizamos a nova estrutura
Acredito que esta mudança vai agregar muito na arquitetura do projeto deixando bem claro oque esta acontecendo em cada lugar sem a necessidade de abrir cada pasta, além de ficar mais facil de manter o projeto utilizando esta estratégia.
Sobre a mudança ser apenas depois do lançamento de todos endpoints eu acredito que como temos testes para toda a aplicação e seria uma mudança apenas de namespace seja possivel realizarmos tal ato em parelelo ao desenvolvimento para que quando for lançado a feature ja estar seguindo com uma arquitetura mais clara e objetiva.
Analisando a estrutura do projeto, notei algumas coisas que me incomodaram um pouco! Ao ver toda a estrutura, não diz sobre o negócio, temos que entrar dentro das pastas para saber exatamente do que se trata a aplicação.
Alguns pontos que me incomodaram por exemplo é o diretório
ValueObjects
geralmente oValueObject
é vinculado a um Domínio da aplicação.Gostaria de sugerir a seguinte estrutura, dividindo alguns pontos em contextos e gostaria que vocês analisem pra ver se faz sentido.
Pontos positivos com essa mudança:
ValueObjects
vão ficar separados por Contexto, ou seja vamos saber exatamente de qual contexto era cada Valor de Objeto criado.ChargeFindByIdService
ChargeCreateService
eChargeFindAllService
, dessa forma cada serviço teria responsabilidade única e estaria dentro do seu contexto.Quão custoso sera essa implementação ?
Pelo fato de a codebase já possuir testes, acredito que a refatoração será fácil pois será afetada apenas os namespaces e o PHPStorm resolve isso muito fácil.
Não realizei a divisão de diretório seguindo a fundo a ideia de DDD, de criar uma camada para
Application
,Domain
,Infra
ePresentation
pois acho que seria um esforço muito grande para o que o projeto resolve.Fico no aguardo do retorno e participação de todos para essa decisão.