Sou desenvolvedor júnior entre os idosos e estou lutando muito com a compreensão de seus pensamentos, raciocínios.
Estou lendo DDD ( Domain-Driven Design ) e não consigo entender por que precisamos criar tantas classes. Se seguirmos esse método de criação de software, terminaremos com 20 a 30 classes que podem ser substituídas por no máximo dois arquivos e 3-4 funções. Sim, isso pode ser confuso, mas é muito mais sustentável e legível.
Sempre que eu quiser ver o que algum tipo de ação EntityTransformationServiceImpl
faz, preciso seguir muitas classes, interfaces, suas chamadas de função, construtores, sua criação e assim por diante.
Matemática simples:
- 60 linhas de código fictício vs 10 classes X 10 (digamos que tenhamos lógicas totalmente diferentes) = 600 linhas de código confuso vs. 100 classes + mais algumas para envolvê-las e gerenciá-las; não esqueça de adicionar injeção de dependência.
- Lendo 600 linhas de código confuso = um dia
- 100 aulas = uma semana, ainda se esqueça de quem faz o quê, quando
Todo mundo está dizendo que é fácil de manter, mas para quê? Toda vez que você adiciona novas funcionalidades, adiciona mais cinco classes com fábricas, entidades, serviços e valores. Eu sinto que esse tipo de código se move muito mais devagar que o código confuso.
Digamos que, se você escrever um código confuso de 50K LOC em um mês, o DDD precisará de várias revisões e alterações (eu não me importo com os testes nos dois casos). Uma simples adição pode levar uma semana, se não mais.
Em um ano, você escreve muitos códigos confusos e pode reescrevê-los várias vezes, mas com o estilo DDD, você ainda não possui recursos suficientes para competir com códigos confusos.
Por favor explique. Por que precisamos desse estilo DDD e de muitos padrões?
UPD 1 : Eu recebi tantas respostas ótimas, vocês podem adicionar um comentário em algum lugar ou editar sua resposta com o link para a lista de leitura (não sei por onde começar, DDD, Design Patterns, UML, Code Complete, Refactoring, Pragmatic,. ... tantos bons livros), é claro com sequência, para que eu também possa começar a entender e me tornar mais velho, como alguns de vocês.