As time passed by I learned that not strictly following the rules of a architectural pattern like mvc kind of counteracts the actual purpose of having a maintable software. Usually I end up with fat monster controllers or a model that does too much. Usually this happens because I didnt modularize my code enough just to avoid having too many classes.
In my very last project I tried a different approach: I analyzed what I wanted to program and tried to achieve a high atomicity by grouping the system into smaller components. These components will then each have a model, controller, and a view. Everything in top down strict hierarchical manner where each component is only dependent on its children and never the parent.
For example for a highly atomic archtitecture:
HumanModel, HumanController, HumanView
BrainModel, BrainController, BrainController
FrontalLobeModel, FrontalLobeController, FrontalLobeView,
NerveModel, NerveController, NerveView,
NerveNucleusModel, NerveNucleusController, NerveNucleusView
GolgiAparatusModel, GolgiAparatusController, GolgiAparatusView
I could go on but you can probably see what I mean by now. While the amount of files or classes increases I believe it makes the application more "future proof". If I were to extend the functionality of the human then it would be easier and I dont have to rewrite anything. Since I use this approach I never had any problems. Even if some classes happen to be very minimalistic, in the future I might have to extend the functionality of the brain.
Why do people say its overkill?