Ton cerveau ne ment pas : la science derrière le code propre
La révolution cognitive : des maths aux neurosciences
C’est précisément le pari qu’a fait Sonar en 2017 avec une métrique conçue par G. Ann Campbell : la Complexité Cognitive. Le geste est subtil : on continue de compter, mais on change radicalement ce qu’on compte. Là où la complexité cyclomatique de McCabe additionnait les chemins d’exécution de la machine, la Complexité Cognitive cherche à chiffrer l’effort réel demandé au cerveau qui lit. Le compteur n’a pas disparu, il s’est enfin tourné vers le bon sujet : toi.
Un an avant Halstead, Thomas McCabe proposait une autre mesure : la complexité cyclomatique. Elle compte le nombre
de chemins d’exécution indépendants dans une fonction, soit 1 + nombre de points de décision (if, for, while,
case, &&, ||).
Une fonction sans branchement vaut 1. Chaque if ajoute 1. Une valeur au-delà de 10 est généralement considérée comme
un signal de refactoring.
L’idée est plus robuste que Halstead car elle capture la structure plutôt que le volume. Elle reste pourtant aveugle au même problème : deux fonctions à complexité cyclomatique identique peuvent être radicalement différentes à lire. Le nombre de chemins ne dit rien de la charge que chaque chemin impose au lecteur.
Le principe est d’une simplicité redoutable. Chaque fois que le code casse la lecture linéaire (de haut en bas, de gauche
à droite), on ajoute un point. Une boucle, une condition, un catch : autant de ruptures qui obligent ton cerveau à faire
une pause et à retenir un contexte. Et surtout, l’imbrication est pénalisée lourdement. Une boucle dans une boucle dans
une condition coûte beaucoup plus cher que trois structures posées à plat, parce que tu dois empiler les contextes dans
ta mémoire de travail au lieu de les traiter un par un.
Un exemple vaut mieux qu’un long discours. Voici la même logique métier, écrite de deux façons :
// Imbriqué : Complexité Cognitive de 6, les niveaux s'empilent (+1, +2, +3)
function prixPanier(user: User | null, cart: Cart): number {
if (user) {
if (user.isActive) {
if (cart.items.length > 0) {
return calculerTotal(cart);
}
}
}
return 0;
}
// Aplati : même complexité cyclomatique (4), Complexité Cognitive de 2
function prixPanier(user: User | null, cart: Cart): number {
if (user && user.isActive && cart.items.length > 0) {
return calculerTotal(cart);
}
return 0;
}
Les deux fonctions ont exactement la même complexité cyclomatique : 4 chemins, mêmes tests, mêmes branches. Pourtant la Complexité Cognitive de la première est de 6, chaque niveau d’imbrication coûte plus cher que le précédent, contre 2 pour la seconde, où les trois conditions se lisent d’une traite comme une seule phrase. La Complexité Cognitive, elle, voit la différence que le simple décompte ignore.
Si tu trouves que cette métrique colle de façon troublante à ton ressenti, c’est normal. Elle a été calibrée non pas sur une théorie, mais sur ton inconfort.
Et la recherche est allée bien plus loin que la simple mesure statique. Dès 2014, une équipe autour de Janet Siegmund a glissé des développeurs dans un appareil d’IRM fonctionnelle pour observer leur cerveau pendant qu’ils lisaient du code. Le résultat a surpris les chercheurs : la compréhension de code mobilise surtout des régions associées au langage, à l’attention et à la mémoire de travail. De quoi suggérer que, neurologiquement, déchiffrer un programme tiendrait davantage de la lecture d’une phrase que de la résolution d’une équation. Pour filer l’image, c’est une revanche posthume du texte : Halstead avait raison de flairer un langage, il l’avait simplement cherché du mauvais côté du cerveau.
Depuis, le terrain s’est emballé. Des chercheurs comme Norman Peitek combinent l’IRM avec l’eye-tracking pour suivre, milliseconde par milliseconde, où ton regard se bloque et patine sur un bout de code. On mesure même la dilatation de tes pupilles, un proxy imparfait mais précieux de la charge cognitive. D’autres équipes, autour de Thomas Fritz, branchent des casques EEG pour lire l’activité cérébrale et prédire à quel moment une tâche devient trop difficile. On ne conçoit plus seulement les outils de demain à coups d’intuition : on les prototype en regardant le cerveau des devs saturer en direct.
Médite un instant ce que ça veut dire. La qualité du code est devenue un sujet de neurosciences expérimentales. Ton “ce code me donne mal à la tête” n’est plus une opinion. C’est une hypothèse vérifiable, et elle se vérifie.
Tags
Articles similaires
Écoconception
Empreinte environnementale estimée · Modèle SWD v4 · 442 g CO₂eq/kWh