Refactoring for Novices in Java: An Eye Tracking Study on the Extract vs. Inline Methods

Cette étude utilisant le suivi oculaire auprès de novices en Java révèle que le choix entre l'extraction et l'inlining de méthodes dépend de la difficulté de la tâche, l'extraction améliorant les performances pour les tâches complexes mais les dégradant pour les tâches simples en augmentant la charge cognitive et les allers-retours visuels.

José Aldo Silva da Costa, Rohit Gheyi, José Júnior Silva da Costa, Márcio Ribeiro, Rodrigo Bonifácio, Hyggo Almeida, Ana Carla Bibiano, Alessandro Garcia

Publié 2026-03-06
📖 5 min de lecture🧠 Analyse approfondie

Each language version is independently generated for its own context, not a direct translation.

Voici une explication simple de cette étude scientifique, imaginée comme une histoire sur la façon dont notre cerveau lit le code.

🧠 L'histoire : Le mystère du "Code Propre"

Imaginez que vous apprenez à cuisiner. Vous avez deux façons de préparer un plat :

  1. La méthode "Tout-en-un" (Inline) : Vous prenez tous les ingrédients, vous les mélangez directement dans la casserole, et vous mangez. C'est rapide, tout est sous vos yeux.
  2. La méthode "Recette séparée" (Extract) : Vous écrivez une petite recette sur un bout de papier pour une étape précise (par exemple, "préparer la sauce"), vous la posez sur le côté, et vous lisez cette recette quand vous en avez besoin.

Les experts en cuisine (les développeurs confirmés) adorent la méthode 2. Ils disent : "C'est plus propre, plus réutilisable, et plus facile à comprendre !" C'est comme ranger ses outils dans des boîtes étiquetées.

Mais cette étude se pose une question fascinante : Est-ce que ça marche aussi bien pour les débutants ?

Les chercheurs ont décidé de tester cela avec 32 étudiants débutants en Java (le langage de programmation). Mais au lieu de juste demander "C'est facile ?", ils ont utilisé une technologie de pointe : un suivi des yeux (eye-tracking). C'est comme si on mettait des caméras sur les yeux des étudiants pour voir exactement où ils regardent, à quelle vitesse, et combien de fois ils reviennent en arrière.

🔍 Ce qu'ils ont découvert (Les surprises)

L'étude a révélé que la réponse n'est pas "oui" ou "non", mais "ça dépend de la difficulté de la tâche".

1. Pour les tâches complexes : La recette séparée est une aide 🏰

Imaginons qu'il faut calculer une factorielle (un calcul mathématique un peu compliqué avec des boucles).

  • Ce qui se passe : Avec la méthode "Tout-en-un", le débutant doit lire une longue suite d'instructions. Son cerveau s'embrouille. Ses yeux font des allers-retours constants (comme un ping-pong) pour essayer de comprendre la logique. C'est fatiguant !
  • Le résultat : Quand les chercheurs ont séparé le calcul dans une petite fonction nommée "CalculerFactorielle", les yeux des étudiants se sont calmés. Ils ont pu lire le nom de la fonction, comprendre l'idée générale, et aller plus vite.
  • Analogie : C'est comme lire un roman. Si un chapitre est trop long et dense, il est difficile de suivre. Si l'auteur met un résumé en haut de page ("Ici, le héros combat le dragon"), votre cerveau se repose et avance plus vite.

2. Pour les tâches simples : La recette séparée est un obstacle 🚧

Maintenant, imaginons une tâche très simple : calculer l'aire d'un carré (juste côté x côté).

  • Ce qui se passe : Avec la méthode "Tout-en-un", c'est une ligne de code. C'est immédiat. Mais avec la méthode "Recette séparée", le débutant doit lire la ligne principale, puis sauter vers le haut de l'écran pour lire la recette, puis revenir en bas pour voir le résultat.
  • Le résultat : Les yeux des étudiants ont fait des allers-retours inutiles. Le temps de lecture a explosé (parfois jusqu'à 166% plus long !).
  • Analogie : C'est comme si vous vouliez juste allumer la lumière de votre chambre. Au lieu d'appuyer sur l'interrupteur à côté de vous, on vous oblige à ouvrir une porte, aller dans le couloir, appuyer sur un interrupteur, revenir, et ensuite allumer la lumière. C'est de la "navigation inutile". Le cerveau du débutant se dit : "Pourquoi je fais tout ce chemin pour quelque chose d'évident ?"

🧐 Le paradoxe des débutants

Le plus intéressant dans cette étude, c'est le décalage entre ce que les débutants pensent et ce qu'ils font.

  • Ce qu'ils disent : "J'aime mieux la méthode séparée ! Ça a l'air plus organisé, plus pro, et le nom de la fonction m'aide."
  • Ce que leurs yeux disent : "Attends, je suis en train de faire des allers-retours inutiles et je mets plus de temps à comprendre !"

Les débutants sont attirés par les "noms magiques" (les étiquettes sur les boîtes), mais ils n'ont pas encore assez d'expérience pour utiliser ces étiquettes efficacement. Ils doivent encore vérifier ce qu'il y a à l'intérieur de la boîte, ce qui annule l'avantage de l'étiquette.

💡 La leçon pour les professeurs et les étudiants

Cette étude est une alerte pour les enseignants de programmation :

  1. Ne pas sur-organiser trop tôt : Pour les tout-petits exercices (comme calculer une aire ou vérifier si un nombre est pair), il vaut mieux laisser le code "tout en un". Ajouter une fonction séparée crée une friction inutile.
  2. La complexité est la clé : La séparation du code (l'extraction de méthode) est un super-pouvoir, mais seulement quand la tâche est assez complexe pour justifier le voyage vers la "recette".
  3. Les yeux ne mentent pas : On ne peut pas se fier uniquement à ce que les gens disent. Parfois, ils pensent qu'une chose est meilleure, alors que leurs yeux révèlent qu'ils souffrent en silence.

En résumé

Pensez au code comme à un voyage.

  • Si le voyage est court (tâche simple), prendre un taxi qui vous fait faire un détour pour passer par une station-service (la fonction séparée) est une perte de temps.
  • Si le voyage est long et compliqué (tâche complexe), avoir une carte détaillée (la fonction nommée) vous évite de vous perdre et vous fait gagner du temps.

Les chercheurs nous disent : "Ne copiez pas les experts aveuglément. Adaptez la structure du code à la difficulté de la tâche, surtout quand on apprend."