Utilisabilité du code / Cognitive Friction
Posté par Eric Lefevre-Ardant, le 07/08/2008.
Régis Médina a repris la présentation qu’il a faite à XP Day Paris 2008. J’aime bien les présentations de Régis qui sont toujours agréables et intéressantes (même si, pour être honnête, une partie du contenu était déjà dans sa présentation classique sur le refactoring faite il y a un an à XP Day).
Dans celle-ci, il cherche à aller plus loin dans le refactoring. L’idée de base est que l’on pourrait appliquer des principes d’ergonomie des interfaces homme-machine à l’écriture du code. En fait, pour Régis, le code est une interface homme-machine.
Points à retirer:
- il faut se mettre à la place d’une personne qui veut comprendre le code et organiser par exemple les répertoires en fonction: concepts importants près de la racine, les concepts périphériques plus bas
- le concept d’”affordance” (Capacité d’un objet à suggérer son utilisation, comme un bouton qui est en relief pour indiquer qu’il peut être cliqué) nous suggère d’être strict sur les types de paramètres à passer à une méthode; typiquement, si on exige un Enum plutôt qu’un entier, il est nettement plus facile de comprendre ce qu’il se passe
- on peut utiliser les exceptions pour envoyer des messages qui expliquent comment marche l’application (“ce problème est apparu parce que vous n’avez pas le droit de faire ceci; essayez plutôt cela”); le projet Wicket semble un bon exemple
- l’alignement signifie que l’on va cherche à écrire notre code d’une façon qui rappelle le contexte. Par exemple, si on se préoccupe d’un tableau affiché à l’utilisateur, il est intéressant d’écrire le contenu affiché dans ce tableau de façon tabulaire
Comme toujours, cela peut sembler un peu abstrait dans un simple post. Comme dirait Vincent Miramond, il faut le voir chez soi. Mais je crois que Régis tient un concept intéressant, même s’il reste à creuser.

Tags: Agile2008, Conférences