Lecture de code: pourquoi ça n'est pas simple et comment s'améliorer
J'ai réalisé récemment quelque chose sur la lecture du code et sur pourquoi ça n'est pas toujours simple, notamment quand on débute.
Le code informatique, comme tous les outils qu'on utilise, n'existe qu'au travers des transformations qu'il apporte à son environnement. Tournevis, tondeuse, pinceau... sans leur finalité, ces objets n'existeraient pas.
Dans le cas d'un programme informatique, l'environnement, c'est la donnée au sens large (base de données, fichier, flux entrée/sortie...) Pour comprendre ce que fait un programme, on a donc besoin de comprendre ce qui y rentre, et ce qui en sort. Notre cerveau se représente ensuite la transformation appliquée.
On retrouve ce même principe dans les lignes de code qui composent un programme: chaque ligne crée ou transforme un peu de donnée, et de proche en proche on finit par obtenir le fonctionnement global du programme.
Pour comprendre ces lignes de code, on a besoin de "voir" dans quel état est notre matière première (les données), c'est à dire visualiser leur type et ce qu'elles contiennent. Mais comment voir ce qui n'est pas écrit ? Un programme donne des instructions, pas le résultat, qui est par essence dynamique !
Comprendre des lignes de code, c'est donc arriver à se représenter mentalement la donnée qui transite au fil des lignes. Autrement dit, comprendre des lignes de code c'est littéralement lire entre les lignes qui composent notre programme.
Avec l'expérience, cette exercice mental est fait inconsciemment et rapidement: c'est ce qui permet à un développeur plus expérimenté de trouver en quelques secondes la faille dans le bout de code sur lequel un collègue bute depuis 30 minutes.
Alors comment mieux lire le code pour mieux le comprendre ? Je pense que faire cet exercice systématique d'analyse consciente du type de donnée manipulée peut aider à former cet automatisme qui permet de gagner en compréhension et en vitesse.
A l'inverse, je crois qu'écrire du code clair c'est écrire du code qui aide le lecteur à suivre le fil de la donnée, pour alléger le travail de représentation mentale et rendre ainsi la lecture plus fluide. Indentation, commentaires, style de programmation "fonctionnelle"... plusieurs moyens existent pour aller dans ce sens, peut-être l'objet d'un futur article ?
Edouard
CTO PPE analytics