Sto progettando una grande applicazione (un analizzatore di codice statico) e ho una scelta su come organizzare il codice in moduli:
-
Un approccio è quello che chiamerei per funzione tecnica . Qui è dove hai un pacchetto per gli oggetti dati, un altro per funzioni di servizio, viste, controller, ecc.
-
Un altro approccio è quello che chiamerei funzione aziendale . Questo in cui avresti un pacchetto per, diciamo, controllo delle scorte, un altro per le schede di prodotto, gli ordini dei clienti, ecc.
La maggior parte dei framework tende a spingermi verso il primo approccio. A volte ci sono motivi tecnici per questo, ad es. se la vista è scritta in JavaScript e il resto in Python, devi davvero tenerlo separato. Ma soprattutto è solo una questione di convenzione.
A volte l'organizzazione per funzione tecnica si traduce nella diffusione del codice correlato attraverso l'applicazione. Se ho il codice per supportare un prodotto, finisco con ProductModel, ProductService, ProductView, ecc. Spesso sento che sarebbe più semplice avere semplicemente un oggetto Product che faccia tutto questo.
Anche l'organizzazione per funzione aziendale ha dei problemi. Alcune classi sono borderline ed è abbastanza arbitrario quale pacchetto le metti. E ci sono alcuni oggetti di supporto che sono usati in tutte le funzioni aziendali.
Quale approccio sarà più efficace per creare un'applicazione scalabile e manutenibile?