Ce n'est pas pour faire joli, ce n'est pas pour respecter des lois théoriques sans intérêt.
Il faut diviser pour régner.
Il faut qu'il y ait un faible couplage entre le code.

Un grand principe à retenir : Modifier une partie de code ne doit pas influencer une autre. (comprendre, ne pas casser)

Chaque section doit être spécialisée dans sa fonction.
Si une classe un fichier devient monstrueusement grande et fourre-tout, songer à la diviser.
- compréhension plus aisée
- maintenance plus aisée, on sait où intervenir si c'est bien divisé par responsabilité.
- 2 personnes peuvent travailler sur les fichiers en même temps
- modifier une partie de remet nullement en cause les autres.
Imaginez en comparaison un grand fichier qui fait tout. Le jour où il faut modifier la variable "tab" qui est utilisée durant 2000 lignes -> effet de bord garantit, stress et énervement.

Le pattern MVC : model - view- controller est un modèle par excellence

le code qui manipule les données -> le modèle, la classe qui enregistre, charge etc.
le code qui afficher les interfaces graphiques -> la vue . La vue "affiche" le modèle.
le code qui lance les opérations -> le contrôleur, la gestion des évènements de la vue, route vers le modèle

Une interface graphique bien conçue ne fait pas
"select * from article where id = 1" , "insert into article detail <saisie utilisateur>"
mais "Article::charger(1)" , "Article->ajouterInfo (<saisieUtilisateur>)"
Abstraction.

Le code est maitrisé. Chaque section est spécialisée dans son rôle.