Pourquoi la revue de code, câest le bien
Ou pourquoi la revue de code est une étape absolument nécessaire et comment la mettre en place
A quoi sert vraiment une revue de code ?
Si lâon croit la plupart des articles sur le sujet, la revue de code est sensĂ© âpermettre de dĂ©tecter les dĂ©fauts dans le processus de dĂ©veloppement le plus en amont possibleâ et donc limiter le risque de bug.
ConcrĂštement, je trouve que câest un rĂ©sumĂ© rĂ©ducteur, jây vois plutĂŽt ces deux objectifs :
- VĂ©rifier quâune tĂąche dĂ©veloppĂ©e ne contient pas dâerreur de logique, quâelle est relativement optimale (ou en tout cas pas inutilement complexe) et que tous les cas dâutilisation ont Ă©tĂ© implĂ©mentĂ©s
- Sâassurer que le code sera comprĂ©hensif et maintenable (donc correctement Ă©crit ou documentĂ© lorsque nĂ©cessaire, avec des variables et mĂ©thodes aux noms intelligibles, ect)
Pour le premier point, les tests unitaires sont censĂ©s dĂ©jĂ remplir cette fonction; il faut bien cependant que quelquâun vĂ©rifie, a minima :
que les tests sont bien écrit
quâils ne font pas que bĂȘtement appeler du code pour augmenter la couverture / que les assertions sont pertinentes
quâils prennent en compte les cas aux limites, etc.
Pour le second point, câest dĂ©jĂ plus relatif⊠mais la finalitĂ© est de comprendre ce que fait le code le plus rapidement possible, sans avoir Ă demander Ă celui qui lâa Ă©crit (auquel cas il faut, de facto, le notifier pendant la revue)
Et bien Ă©videment le code doit ĂȘtre sans redondance, le plus homogĂšne possible avec le reste de lâapplication (pas deux termes diffĂ©rents pour parler de la mĂȘme chose) et doit ĂȘtre refactorĂ© si besoin, selon le temps disponible pour cela.
De plus, en dehors de ces objectifs, la relecture de son code par un tiers reste Ă©videment un excellent moyen de vĂ©rifier que lâon a pas commis des erreurs d'inattention basique ; et câest aussi le meilleur accompagnement Ă donner Ă quelquâun qui arrive sur un projet pour quâil monte en compĂ©tence !
Câest Ă©galement une formidable aide Ă la cohĂ©sion dâĂ©quipe, surtout entre dĂ©veloppeurs ne se connaissant pas / nâayant pas travaillĂ© ensemble et un outil dâamĂ©lioration continue !
Comment faire du code review
Avec des outils comme gitHub, gitLab ou encore bitBucket, il est trĂšs simple de mettre en place des demandes de relectures de code avant validation (pull request chez gitHub & bitBucket), plus besoin donc dâaller lire le code de quelquâun par dessus son Ă©paule et surtout, les ajouts, suppressions et modifications sont affichĂ©es de maniĂšre intelligible !
Pour aller avec lâoutillage, il faut la mĂ©thodologie qui sied bien : avec git, le plus simple reste sans doute de faire du git flow, et de ne merger les branches quâĂ la validation du code review.
La taille de lâĂ©quipe et son organisation importe Ă©galement Ă©normĂ©ment ! La revue de code va prendre du temps et demander de la concentration pour ĂȘtre efficace, et mĂȘme si, idĂ©alement, tout le monde devrait relire le code des autres et l'approuver Ă lâunanimitĂ©, câest bien souvent impossible au delĂ de 3 dĂ©veloppeurs sur un projet⊠2 relecteurs par demande semble ĂȘtre le meilleur compromis.
Bien entendu, les revues de code doivent ĂȘtre faites dans un dĂ©lai raisonnable aprĂšs la publication dâune demande de relecture, et ne pas sâempiler (le stock, câest le mal)
Pour une revue de code plus efficace, il convient dâavoir un template contenant une checklist de point critiques Ă vĂ©rifier :
Si le dĂ©veloppement implique du front, poster une capture dâĂ©cran
Si un ajout/modification de base est faite, la documentation doit ĂȘtre mise Ă jour
Avoir un lien vers le ticket de la tùche à réaliser (jira, trello, bugzilla, mantis...)
Comment relire / proposer une amélioration ?
Avant de relire, il faut connaitre la description de la feature derriĂšre le code, il est donc indispensable dâavoir un lien vers le ticket concernĂ©.
Lâoutil de revue de code doit permettre lâajout de commentaire, câest indispensable. Ceux-ci se doivent dâĂȘtre le plus clair possible, sans quoi le dĂ©veloppeur va perdre du temps Ă essayer de comprendre ce qui ne va pas; il ne faut donc pas hĂ©siter en cas de doute Ă relire le code directement avec le dĂ©veloppeur qui lâa initiĂ©, cela est parfois plus rapide et efficace que dâĂ©crire des remarques incomprĂ©hensibles pour autrui.
Basiquement, il faut, avec le besoin en tĂȘte, regarder les modifications de code et voir si on les comprend et si elles sembles pertinentes.
En cas dâincomprĂ©hesion, faire un commentaire en proposant un autre nom / une autre façon de faire
Si le code est clair mais quâil pourrait ĂȘtre amĂ©liorĂ©, proposer un code plus optimal, et si possible en exprimant le niveau de criticitĂ© (par exemple : si tu as le temps, fais ceci... versus ton code va gĂ©nĂ©rer des fuites mĂ©moires vu les volumes attentdus, fais plutĂŽt comme cela...)