Con il passare del tempo ho appreso che non seguendo strettamente le regole di un modello architettonico come il tipo di mvc contrasta lo scopo reale di avere un software maintable. Di solito finisco con i controller mostri grassi o un modello che fa troppo. Di solito questo accade perché non ho modularizzato abbastanza il mio codice solo per evitare di avere troppe classi.
Nel mio ultimo progetto ho provato un approccio diverso: ho analizzato ciò che volevo programmare e ho cercato di ottenere un'elevata atomicità raggruppando il sistema in componenti più piccoli. Questi componenti avranno quindi un modello, un controller e una vista. Tutto in cima alla rigorosa gerarchia in cui ogni componente dipende solo dai figli e mai dal genitore.
Ad esempio per un'architettura molto atomica:
HumanModel, HumanController, HumanView
BrainModel, BrainController, BrainController
FrontalLobeModel, FrontalLobeController, FrontalLobeView,
NerveModel, NerveController, NerveView,
NerveNucleusModel, NerveNucleusController, NerveNucleusView
GolgiAparatusModel, GolgiAparatusController, GolgiAparatusView
etc
Potrei andare avanti ma probabilmente puoi vedere cosa intendo adesso. Mentre la quantità di file o classi aumenta, credo che renda l'applicazione più "a prova di futuro". Se dovessi estendere la funzionalità dell'umano, sarebbe più semplice e non dovrò riscrivere nulla. Dal momento che utilizzo questo approccio non ho mai avuto problemi. Anche se alcune classi sono molto minimaliste, in futuro potrei dover estendere la funzionalità del cervello.
Perché le persone dicono che è eccessivo?