Ces dernières années les outils d'analyse statique du code (comme Psalm ou PHPStan) se sont imposés dans nos projets. Ils permettent de nous montrer des erreurs en l'espace de quelques secondes sans avoir à exécuter notre code.

Les exceptions font également partie intégrante de nos projets car elles offrent une manière simple pour sortir du chemin d'exécution nominal. Cependant ce mécanisme opère en dehors du système de typage (puisqu'elles n'apparaissent pas dans la signature des fonctions) ce qui empêche les outils d'analyse statique de vérifier que chaque Exception est gérée correctement. Ce manque d'outillage nous impose de faire cette vérification via des tests fonctionnels (donc plus lents à détecter les problèmes).

On verra comment le pattern Monad (via Either et Maybe) venant de la programmation fonctionnelle nous permet de gérer nos exceptions d'une manière compréhensible par les outils d'analyse statique. Le but étant d'accélerer et d'augmenter la fiabilité de la gestion des erreurs en supprimant le besoin d'écrire des tests nous même.

Comments

Comments are closed.

De toutes les conférences auxquelles j'ai assisté lors du forum, c'est celle qui me donne le plus envie d'ouvrir mon éditeur et de tester ! Les exemples choisis sont judicieux. Le concept de Monads que j'ai découvert me paraît très puissant, si bien que je me pose la question suivante : serait-il possible ? souhaitable ? que de telles fonctionnalités soient directement portées par PHP ? (je précise que je n'ai jamais codé en C pour PHP, donc désolé si la question ne fait pas pleinement sens).

En tout cas, un grand merci !

Marine Gandy at 10:26 on 26 Oct 2021

Super intéressant, je n'avais jamais entendu parler de Monad auparavant et c'est vrai que ça donne envie de jouer avec :) Je ne suis pas sûre de pouvoir l'appliquer sur mon projet mais déjà j'ai découvert le concept !