Paraphrase, ou intention
Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 4 — Discipline de programmation, validation et test
Énoncé
Classer ces six commentaires : lesquels paraphrasent le code, lesquels disent l'intention ? Réécrire les mauvais.
/* 1 */ n = n + 1; /* on ajoute 1 a n */
/* 2 */ n = n + 1; /* on compte la ligne qu'on vient de lire */
/* 3 */ if (d != 0) { q = n / d; } /* si d est non nul, on divise */
/* 4 */ if (d != 0) { q = n / d; } /* d nul signifie « pas de mesure » */
/* 5 */ i = g + (d - g) / 2; /* et non (g + d) / 2 : celui-la deborde */
/* 6 */ for (int k = 0; k < n; k++) /* boucle de 0 a n - 1 */Corrigé
| Verdict | Pourquoi | |
|---|---|---|
| 1 | paraphrase | Supprimez la ligne de code : le commentaire ne dit plus rien. |
| 2 | intention | Il nomme ce que compte. Aucune relecture du code ne le donne. |
| 3 | paraphrase | Il traduit `!=` en français. |
| 4 | intention | Il donne la convention du domaine : pourquoi zéro est un cas spécial, ce que le code ne peut pas dire. |
| 5 | intention | Il explique un choix et met en garde contre l'écriture qu'on aurait spontanément faite. C'est le meilleur des six. |
| 6 | paraphrase | Et pire : il est fragile. Que quelqu'un écrive `k <= n` et le commentaire devient un mensonge. |
Le test à appliquer, celui du programme officiel : supprimer mentalement la ligne de code. Si le commentaire ne porte plus aucune information, il n'en portait pas.
Réécritures.
/* 1 */ n = n + 1; /* une entree valide de plus */
/* 3 */ if (d != 0) { q = n / d; } /* d == 0 : la mesure est manquante,
on laisse q inchange */
/* 6 */ for (int k = 0; k < n; k++) /* on essaie chaque candidat */
Un commentaire qui paraphrase est inutile ; un commentaire périmé est nuisible, parce qu'on le croit. C'est l'argument décisif contre la paraphrase : elle multiplie les endroits qu'une modification doit mettre à jour, sans rien apporter en échange. Les commentaires d'intention, eux, survivent aux réécritures — l'intention change rarement.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.