Dans l’article n°1 nous avons vus la liste des erreurs de développement les plus communes rencontrées dans les applications webs PHP. Dans ce dernier article nous allons revenir en détails sur un point essentiel :

10) Casser le modèle MVC

  Pour commencer quelques rappels rapides sur le modèle MVC :

  • Modèle/Vue/Contrôleur
  • Vise à séparer la logique, les données et la présentation afin que chacun puisse être modifié séparément
  • Facilite la maintenance du code
  • Facilite la séparation des ressources de développement/graphisme
  • Le développeur code la logique métier
  • Le graphiste code la présentation
  • Le contrôleur orchestre le tout

[1] Voir l’article Wikipedia pour plus de détails. En général quand on code avec un réel framework (genre symfony pour PHP), le modèle MVC est respecté au moment de la conception. Mais que ce passe t’il lorsque l’on se retrouve devant le bug qui a de gros impact ? la correction à faire rapidement alors que l’on est déjà passé à d’autres projets ? La refonte du site qui intègre des éléments qui n’avaient pas été prévus à l’origine ? La tentation est grande d’aller directement dans le code et modifier cela là ou c’est le plus simple. La vielle “rustine” qui casse toute la logique … Or en faisant cela vous ruinez tout le travail du développeur du framework à séparer tout en couche logiques. Celui que vous avez fait précédemment pour y coller et surtout rendez votre projet in-maintenable. C’est vraiment dommage. Réfléchissez donc a 2 fois avant de le faire :

  • Est-ce que la modification “propre” et compatible MVC est tellement longue à implémenter ?
  • Y a t’il moyen de mettre en place un contournement puis prendre le temps de l’implémenter correctement ?

Il est tellement fréquent de voir une logique métier empêtrée dans la base de donnée, des éléments de présentation dans le contrôleur … J’espère donc que vous suivrez ce dernier conseil tant que vous pourrez et que le jour ou vous ne le ferrez pas ça sera en connaissance de cause avec une vraie justification. Frederic pour webofmars Sources: [1] http://www.symfony-project.org/images/jobeet/1_4/04/mvc.png