Avant la mise en production
Votre collègue Karim a ajouté une fonction à l'appli de livraison de repas. Elle calcule la note moyenne d'un restaurant.
Avant de mettre son code en ligne, l'équipe a une règle : une autre personne le relit. Aujourd'hui, c'est vous.
Qu'allez-vous regarder, et comment le lui dire ?
À la fin de cette leçon
Remarque
Je peux relire une petite modification et dire ce qu'il faut améliorer.
Mots clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Relecture de code | la lecture du code d'un collègue avant sa mise en ligne | |
| Demande de fusion | une modification proposée, qui attend sa relecture | pull request |
| Diff | les lignes ajoutées et retirées par une modification | |
| Nommage | le choix des noms des variables et des fonctions | |
| Cas limite | une entrée extrême, comme une liste vide | |
| Commentaire de relecture | une remarque écrite sur une ligne précise |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une relecture commence par le diff
Une demande de fusion montre un diff. Les lignes qui commencent par + sont ajoutées. Celles avec - sont retirées.
Vous ne relisez pas tout le logiciel, seulement ce qui change. Lisez d'abord les noms : disent-ils ce que fait le code, sans avoir à le lire ligne par ligne ?
La modification de Karim
--- a/avis.py
+++ b/avis.py
@@ -10,3 +10,9 @@
def nombre_avis(notes):
return len(notes)
+
+def calc(l):
+ t = 0
+ for x in l:
+ t = t + x
+ return t / len(l)
Essayez : exécutez la modification
# La modification proposée par un collègue.
def calc(l):
t = 0
for x in l:
t = t + x
return t / len(l)
# Les notes de la pizzeria, de 1 à 5 étoiles.
print(calc([5, 4, 3, 4]))
# Et pour un restaurant qui vient d'ouvrir, sans aucun avis ?
# Enlevez le # de la ligne suivante, puis exécutez.
# print(calc([]))
À vous : choisissez des noms clairs
# Même code, mais les noms ne disent rien.
# Renommez calc, l, t et x avec des noms clairs, en français sans accent.
# Puis exécutez : le résultat doit rester 4.0.
def calc(l):
t = 0
for x in l:
t = t + x
return t / len(l)
print(calc([5, 4, 3, 4]))
Cherchez les entrées qui cassent le code
Après les noms, demandez-vous : avec quelles entrées ce code peut-il casser ?
Pensez à la liste vide, au zéro, au nombre négatif, au texte inattendu. Ici, un restaurant qui vient d'ouvrir n'a aucun avis. La division par zéro ferait planter la page.
Demandez aussi s'il existe un test pour chaque cas.
Exemple : quelles notes essayer ?
| Entrée | Ce que fait le code | À signaler ? |
|---|---|---|
| [5, 4, 3, 4] | Renvoie 4.0 | Non, c'est le cas normal |
| [5] | Renvoie 5.0 | Non |
| [] | Plante : division par zéro | Oui, c'est bloquant |
| [6, 4] | Renvoie 5.0 | Oui : une note de 6 étoiles est-elle permise ? |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un bon commentaire est précis et bienveillant
Votre commentaire s'adresse au code, jamais à la personne. Il dit quoi, pourquoi, et propose une solution.
Indiquez aussi si c'est bloquant ou une simple suggestion. Posez une question quand vous n'êtes pas sûr.
Et dites ce qui est bien fait : cela aide autant que le reste.
Exemple : deux façons de dire la même chose
| À éviter | À écrire |
|---|---|
| C'est nul. | Bloquant : avec une liste vide, la ligne 6 divise par zéro. Pouvez-vous renvoyer 0 dans ce cas ? |
| Mauvais noms. | Suggestion : note_moyenne et notes diraient mieux ce que fait la fonction. |
| Pas de test ? | Question : avez-vous prévu un test pour un restaurant sans avis ? |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une erreur fréquente
Attention
Beaucoup pensent qu'une relecture sert à montrer les fautes d'un collègue. C'est faux. Elle sert à livrer un meilleur code, ensemble. Un commentaire sec bloque l'échange. Un commentaire précis permet de corriger vite.