Sono uno sviluppatore junior tra gli anziani e sto lottando molto per capire il loro pensiero, ragionamento.
Sto leggendo Domain-Driven Design (DDD) e non riesco a capire perché dobbiamo creare così tante classi. Se seguiamo quel metodo di progettazione del software finiremo con 20-30 classi che possono essere sostituite con al massimo due file e 3-4 funzioni. Sì, questo potrebbe essere disordinato, ma è molto più gestibile e leggibile.
Ogni volta che voglio vedere cosa fa un qualche tipo EntityTransformationServiceImpl
, devo seguire molte classi, interfacce, le loro chiamate di funzione, i costruttori, la loro creazione e così via.
Matematica semplice:
- 60 righe di codice fittizio vs 10 classi X 10 (diciamo che abbiamo logiche totalmente diverse tra loro) = 600 righe di codice disordinato rispetto a 100 classi + alcune in più per avvolgerle e gestirle; non dimenticare di aggiungere l'iniezione di dipendenza.
- Lettura di 600 righe di codice disordinato = un giorno
- 100 lezioni = una settimana, dimentica ancora quale fa cosa, quando
Tutti dicono che è facile da mantenere, ma per cosa? Ogni volta che aggiungi nuove funzionalità, aggiungi altre cinque classi con fabbriche, entità, servizi e valori. Sento che questo tipo di codice si muove molto più lentamente del codice disordinato.
Diciamo, se si scrive 50K LOC codice disordinato in un mese, la cosa DDD richiede molte recensioni e modifiche (non mi dispiace test in entrambi i casi). Un'aggiunta semplice può richiedere una settimana se non di più.
In un anno, scrivi un sacco di codice disordinato e puoi persino riscriverlo più volte, ma con lo stile DDD, non hai ancora abbastanza funzionalità per competere con il codice disordinato.
Spiega per favore. Perché abbiamo bisogno di questo stile DDD e molti modelli?
UPD 1 : Ho ricevuto così tante risposte fantastiche, potete per favore aggiungere un commento da qualche parte o modificare la vostra risposta con il link per leggere l'elenco (non sono sicuro da dove cominciare, DDD, Design Patterns, UML, Code Complete, Refactoring, Pragmatic,. .. tanti buoni libri), ovviamente con sequenza, in modo che io possa anche iniziare a capire e diventare senior come alcuni di voi.