Code review¶
Mener des reviews efficaces avec un feedback constructif qui fait progresser l'équipe.
La review n'est pas un filtre, c'est un outil¶
Une idée reçue : la code review sert à "empêcher les mauvais commits de passer". C'est une vision defensive qui produit des reviews anxiogenes et des reviewers bottlenecks.
La vision efficace : la review est un moment de partage de connaissance bilateral. Le reviewer apprend le contexte du contributeur ; le contributeur apprend d'une autre perspective sur son code.
Objectifs d'une review¶
- Partage de connaissance — tout le monde comprend ce qui change et pourquoi
- Qualité collective — deux paires d'yeux captent plus qu'une
- Cohérence — le code reste lisible par l'ensemble de l'équipe
- Sécurité — les patterns dangereux sont identifiés avant la production
Ce qui n'est pas l'objectif : prouver que le reviewer est plus intelligent, bloquer des changements par préférence stylistique, remplacer les tests.
Checklist de review¶
Utilisez cette grille pour structurer votre lecture, pas pour tout cocher mecaniquement.
Lisibilite¶
- Les noms de variables, fonctions et classes sont expressifs
- Le code se lit sans commentaires explicatifs superflus
- Les commentaires presents expliquent le "pourquoi", pas le "quoi"
- Les fonctions ont une seule responsabilité
Correction¶
- La logique correspond à la description de la MR
- Les cas limites (null, vide, overflow, concurrence) sont gérés
- Les tests couvrent les scenarios décrits dans la MR
- Les tests échouent si on retire le code qu'ils testent (pas de faux positifs)
Design¶
- Le code suit les patterns établis dans la base existante
- Aucune abstraction prematuree, aucune complexité inutile
- Les dépendances externes sont justifiees
Sécurité¶
- Pas d'injection possible (SQL, shell, HTML)
- Les secrets ne sont pas hardcodes
- Les entrees utilisateur sont validees
- Les permissions sont verifiees au bon endroit
Tests¶
- Les tests sont lisibles et maintenables
- Les cas de régression sont couverts
- Pas de tests qui testent l'implémentation plutôt que le comportement
Feedback constructif¶
Le principe NVC applique aux reviews¶
Separez l'observation du jugement :
| Commentaire peu efficace | Commentaire constructif |
|---|---|
| "Ce code est illisible." | "Cette fonction fait 80 lignes — peux-tu la decomposer ?" |
| "Mauvaise approche." | "J'utiliserais un dictionnaire ici plutôt qu'une serie de if — plus rapide a O(1)." |
| "Tu n'as pas lu les conventions ?" | "Nos conventions nomment les variables en snake_case — cf CONTRIBUTING.md." |
| "Ca va jamais marcher." | "Si l'utilisateur envoie une chaîne vide, ligne 42 leve une KeyError." |
| "Parfait !" (sans détail) | "Bonne idée de centraliser cette validation — plus facile à maintenir." |
Niveaux de sévérité dans les commentaires¶
Rendez explicite ce que vous attendez :
nit:— suggestion stylistique, non bloquante ("nit: tu peux raccourcir avec une comprehension")suggestion:— amélioration, pas obligatoire ("suggestion: un dataclass serait plus expressif ici")question:— besoin de contexte ("question: pourquoi ce timeout a 30s plutôt que la valeur globale ?")blocker:— doit être corrige avant merge ("blocker: cette requête SQL est vulnerable à l'injection")
Approuver avec commentaires
Vous pouvez approuver une MR tout en laissant des commentaires non bloquants. Le contributeur peut merger sans attendre une deuxieme passe. Cela evite les délais inutiles et signale la confiance.
Review asynchrone vs synchrone¶
| Mode | Quand l'utiliser | Bonnes pratiques |
|---|---|---|
| Asynchrone | MR standard, changements bien documentes | Réponse sous 24h ouvrables, prefixer les commentaires |
| Synchrone | MR complexe, premier jet d'une nouvelle approche | Screen share, prévoir 30-60 min, noter les conclusions |
La review en duo
Pour les changements architecturaux importants, organisez une review synchrone courte avant de soumettre la MR formelle. Cela evite des allers-retours longs sur un design fondamental.
Taille des MR¶
La taille d'une MR est le facteur numéro 1 de la qualité d'une review.
graph LR
A["MR > 500 lignes"] --> B["Reviewer fatigue"]
B --> C["Review superficielle"]
C --> D["Bugs passes en prod"]
E["MR < 200 lignes"] --> F["Review focalisee"]
F --> G["Feedback precis"]
G --> H["Merge rapide"] Règles pratiques¶
- Visez des MR de 50 a 200 lignes modifiées (hors code généré)
- Une MR = un objectif (feature, bugfix, refacto — pas les trois)
- Si une MR est grande, decomposez-la en étapes avec des MR intermédiaires sur une branche de feature
Les MR geantes
Une MR de 2000 lignes ne sera pas bien reviewee. Le reviewer va scroller rapidement et approuver pour debloquer. Si vous ne pouvez pas la découper, organisez une session de review synchrone.
Focus par type de changement¶
| Type de changement | Questions prioritaires |
|---|---|
| Nouvelle feature | Est-ce que ca correspond au ticket ? Les cas limites sont couverts ? |
| Bugfix | Comprend-on la cause racine ? Le test prouve-t-il la régression ? |
| Refactoring | Le comportement observable est-il identique ? Les tests passent ? |
| Dépendance externe | Licence compatible ? Mainteneur actif ? Taille de l'impact bundle ? |
| Migration de schéma | Le rollback est-il possible ? La migration est-elle idempotente ? |
| Changement de config | L'environnement cible est-il explicite ? Les secrets sont-ils exclus ? |
Côté contributeur : préparer sa MR¶
Une bonne review commence avant que le reviewer ouvre la MR.
- Description claire : quel problème, quelle solution, comment tester
- Screenshots ou logs si pertinent
- Points d'attention : signaler ce qui est volontairement différent des conventions
- Self-review : relisez votre propre diff avant de demander une review
La self-review
Ouvrez votre propre MR et lisez-la comme si c'etait celle d'un collegue. Vous eliminerez les fautes de frappe, les debug prints oublies et les commentaires inacheves avant que le reviewer les voit.
Points clés¶
- La review est un outil de partage, pas un filtre qualité solitaire
- Prefixez vos commentaires pour signaler leur sévérité
- Approuver avec commentaires non bloquants accéléré les livraisons
- Decomposez les grosses MR — la taille est l'ennemi de la review
- La self-review est la première étape obligatoire
Précédent : Fondamentaux | Suite : Pair et Mob programming