Lors de mon DUT Informatique, j’ai réalisé avec un autre étudiant un petit exercice consistant en une plateforme web de vote permettant aux étudiants d’évaluer leurs cours. Il y a quelques années, j’ai décidé de reprendre et de moderniser le projet en y ajoutant quelques fioritures. Récemment, j’ai achevé mon projet de modernisation par une refactorisation d’une grande partie du code.

À l’origine

Le but de la plateforme, au départ, était de créer un outil d’évaluation avec trois types d’utilisateurs :

  • les étudiants, qui votent et évaluent leurs cours
  • les professeurs, qui peuvent consulter le résultat des votes de leur matière
  • l’administrateur, qui a une vue d’ensemble et peut exporter les résultats des professeurs

Un cas concret, que mon coéquipier et moi avons attaqué très simplement, avec du PHP et du CSS vanilla, et un système de stockage basé sur différents fichiers CSV. Un projet rondement mené, mais quelques temps après et en tant que développeur un peu plus expérimenté, j’ai décidé d’y revenir pour y apporter de petites améliorations.

Modernisation du projet

Lors de mon premier retour sur ce projet, PHP 5 étant déprécié, j’ai commencé par passer le code à PHP 7. J’ai aussi voulu donner une identité visuelle plus homogène à cette plateforme, en ajoutant Bootstrap via un thème Bootswatch. Au niveau du système de stockage, j’ai remplacé les fichiers CSV par un fichier SQLite, parce qu’il est bien plus facile de gérer les changements de notes, et les utilisateurs avec une requête SQL (et aussi parce qu’un fichier SQLite s’embarque facilement dans ce genre de petit projet).

D’ailleurs, pour apporter un peu d’interactivité à la plateforme, j’ai changé la gestion de certains traitements de la plateforme pour des requêtes AJAX. La plateforme est ainsi beaucoup plus moderne, mais il était possible de faire un peu mieux : en lui donnant une structure claire.

Refactorisation

Malgré la modernisation du projet, il restait encore des éléments non utilisés dans le code, et ce dernier manquait d’ailleurs d’une structure claire, séparant la logique du visuel. Je suis donc revenu une deuxième fois sur le projet, cette fois-ci pour faire en sorte que le code suive une structure plus “clean code”, avec une claire séparation “Model-View-Controller”.

Cependant, pour aller plus vite (et parce que je n’avais pas touché du PHP depuis belle lurette), je me suis aidé de l’IA. Je suis ainsi passé par Gemini CLI pour refactorer mon code, et malgré quelques petits soucis, la transformation a été beaucoup plus rapide que si j’avais dû le faire tout seul.

Un screen de Gemini et d'un souci
Je disais donc : quelques soucis…

Conclusion

Reprendre de vieux projets est, je pense, une bonne chose. Cela permet de noter sa propre évolution au travers du code, et d’avoir un contexte tout trouvé pour éprouver d’éventuelles nouvelles pratiques de développeur (TDD, DDD, Clean Code, …). Mon projet “Web Vote” est le premier d’une longue lignée de projet que je voulais reprendre. Et peut-être que j’en parlerai dans de prochains articles.

Le code du projet Web Vote est disponible dans le repository Web Vote Refonte, sur Gitlab.