Comment effectuer la révision du code par Google

Je m'intéresse aux questions de révision de code depuis trÚs longtemps. Plusieurs fois, un problÚme ou un autre s'est posé, soit avec la qualité du code, soit avec le climat dans l'équipe. En effet, la revue de code est sinon le seul, alors l'un des endroits les plus importants pour les conflits dans l'équipe de développement.

Et récemment, en préparation de la prochaine version du podcast Zinc Prod , je découvre que Google a publié une directive de révision de code pleine de réflexions précieuses. Tout le matériel est assez volumineux et ne rentrera pas dans un seul article, je vais donc essayer de mettre en évidence les pensées les plus intéressantes (pour moi).


Alors allons-y


Termes utilisés dans l'article d'origine:


CL - liste des modifications. Mais généralement, cela s'appelle Merge Request ou Pull Request, donc dans l'article j'utiliserai l'abréviation MR


LGTM - Ça m'a l'air bien. Bref, quand ils appuient sur le bouton "approuver". J'utiliserai le terme "aprov", comme plus comprĂ©hensible pour la population.


Idéalité mr


Dans la pratique, on peut rencontrer diffĂ©rents extrĂȘmes lorsque l'on considĂšre la RM. Quelqu'un dans son ensemble commente zadalivaet, jusqu'Ă  ce que tout soit insignifiant, soit corrigĂ©, quelqu'un regarde la logique et appuie sur "upruv".


Une pensĂ©e intĂ©ressante est Ă©crite dans le document Google. MR ne doit pas ĂȘtre parfait, mais il devrait amĂ©liorer la base de code. Autrement dit, Ă  chaque changement introduit, le code devrait s'amĂ©liorer de mieux en mieux. Et si MR ajoute beaucoup de bien, alors vous n'avez pas Ă  vous plaindre des petites choses; il est plus rentable d'obtenir cette amĂ©lioration plus rapidement.


Aucun MR ne devrait aggraver le code. La seule exception est si MR est une solution urgente pour quelque chose.


Liberté de commenter


MalgrĂ© le fait que vous ne pouvez pas vous dĂ©barrasser des bagatelles, vous pouvez nĂ©anmoins Ă©crire librement ces petites choses sur au moins chaque ligne. La contradiction avec le paragraphe prĂ©cĂ©dent est rĂ©solue simplement: le rĂ©viseur prĂ©fixe les bagatelles et la pioche avec le prĂ©fixe "nit:" de l'anglais. piqĂ»re (piqĂ»re). Il n'est pas nĂ©cessaire de corriger de tels commentaires, cependant, l'auteur de MR peut vouloir corriger quelque chose ou, mĂȘme si ce n'est pas le cas, prendre en compte certains points pour l'avenir.


Faits sur les préférences personnelles


Presque toujours, les principes de conception de logiciels standard, basĂ©s sur les meilleures pratiques, sont meilleurs que les vĂ©los difficiles. Par consĂ©quent, la prĂ©fĂ©rence devrait leur ĂȘtre accordĂ©e.
Si vous pouvez appliquer plusieurs approches standard, cela est à la discrétion de l'auteur.
Devis direct pour une meilleure compréhension:


Les aspects de la conception de logiciels ne sont presque jamais un problĂšme de style pur ou simplement une prĂ©fĂ©rence personnelle. Ils sont fondĂ©s sur des principes sous-jacents et doivent ĂȘtre pesĂ©s sur ces principes, et pas seulement par une opinion personnelle. Parfois, il existe quelques options valides. Si l'auteur peut dĂ©montrer (soit par des donnĂ©es, soit sur la base de principes d'ingĂ©nierie solides) que plusieurs approches sont Ă©galement valables, alors le rĂ©viseur doit accepter la prĂ©fĂ©rence de l'auteur. Sinon, le choix est dictĂ© par les principes standard de la conception de logiciels.

Si le critique et l'auteur de MR ne sont pas d'accord


Vient d'abord une tentative de parvenir Ă  un consensus dans les commentaires sur MR. Si cela ne fonctionne pas, alors une discussion personnelle. Si vous n'arrivez toujours pas Ă  un consensus, alors attirez les membres de l'Ă©quipe. Mais le plus important, MR ne devrait pas ĂȘtre bloquĂ© pendant une longue pĂ©riode en raison du dĂ©saccord de deux personnes.


Discuté dans les commentaires -> Discuté personnellement -> Discuté en équipe -> Aller de l'avant


Vitesse de vérification MR


La vitesse est extrĂȘmement importante. Si vous donnez un commentaire tous les quelques jours, alors l'auteur de MR se plaindra qu'ils lui reprochent et l'empĂȘchent de travailler.


Si MR est vérifié trÚs rapidement, tous les commentaires ne seront pas un gros problÚme - aprÚs tout, leurs correctifs seront vérifiés ici et la tùche se poursuivra.


Google vous conseille de ne pas ĂȘtre distrait de se concentrer sur votre tĂąche, mais si vous ĂȘtes distrait, alors voyez s'il y a quelque chose Ă  rĂ©viser. Par exemple, il est revenu du dĂ©jeuner - il a rĂ©visĂ©. EntrĂ© au travail - rĂ©visĂ©. Etc.


Ordre de visualisation MR


Vous devez d'abord regarder le MR dans son ensemble. Est-il nĂ©cessaire du tout, le code est-il au bon endroit (ou devrait-il ĂȘtre dans une bibliothĂšque sĂ©parĂ©e), y a-t-il des problĂšmes globaux?
C'est-à-dire cela n'a aucun sens de regarder certains détails d'implémentation si le code n'est pas là et pas du tout.


En général, l'ordre de visionnement est important afin de donner un retour à l'auteur dans les plus brefs délais (voir paragraphe précédent).


Lorsque vous avez examiné MR dans son ensemble, vous devez parcourir les fichiers principaux, c'est-à-dire vérifiez la chose la plus importante (si ce n'est pas clair ce qui est le plus important, vous pouvez demander au développeur).


Encore une fois, tout problĂšme doit ĂȘtre signalĂ© immĂ©diatement, mĂȘme si vous n'avez pas encore inspectĂ© le MR et dĂ©cidĂ© de l'inspecter gĂ©nĂ©ralement plus tard.


Ensuite, vous devez sĂ©lectionner une sĂ©quence logique pour afficher les fichiers restants. Aucun fichier ne doit ĂȘtre ignorĂ©.


Que rechercher lors de la visualisation


  • Le code est bien conçu
  • La fonctionnalitĂ© est bien faite du point de vue des utilisateurs de ce code, peu importe qui ils sont.
  • L'apparence (le cas Ă©chĂ©ant) devrait ĂȘtre bonne
  • Toutes les nuances de la programmation parallĂšle (le cas Ă©chĂ©ant) sont prises en compte.
  • Code non repensĂ©
  • Le dĂ©veloppeur ne fait pas trop de travail: vous n'avez pas besoin d'Ă©crire du code qui peut ĂȘtre nĂ©cessaire, ou qui peut ne pas ĂȘtre nĂ©cessaire
  • Le code a des tests
  • Les tests sont bien conçus
  • Les noms (pour tout) sont bien choisis
  • Les commentaires sur le code sont comprĂ©hensibles et nĂ©cessaires. Ils doivent expliquer pourquoi cela est fait et non pas comment cela se fait.
  • Ajout de documentation.
  • Le code correspond aux guides de style.

Trop grand MR


Trop de MR doivent ĂȘtre demandĂ©s pour ĂȘtre dĂ©mantelĂ©s. C'est presque toujours possible.


Comment écrire des commentaires sur la révision du code


  • Vous devez ĂȘtre poli, pas pour devenir personnel. Discutez du code, pas du codeur.
  • Pas seulement Ă©mettre des directives pour les corrections, mais expliquer pourquoi vous devez les corriger.
  • Maintenir un Ă©quilibre: identifier le problĂšme et pousser le dĂ©veloppeur afin qu'il comprenne lui-mĂȘme la meilleure façon de le rĂ©soudre; ou Ă©mettez immĂ©diatement une solution toute faite. Le premier dĂ©veloppe le dĂ©veloppeur (bĂ©nĂ©fice stratĂ©gique), le second amĂ©liore et accĂ©lĂšre le MR (bĂ©nĂ©fice tactique).
  • Si le rĂ©viseur n'a pas compris Ă  un moment donnĂ© du code et demande Ă  l'auteur d'expliquer quoi, alors la meilleure rĂ©ponse serait de changer le code. Alors que tout Ă©tait clair du code sans aucun doute.

Si vous n'ĂȘtes pas d'accord avec votre opinion


Il est nĂ©cessaire de comprendre en dĂ©tail. Peut-ĂȘtre que vous ne comprenez pas quelque chose, demandez plus d'informations. Peut-ĂȘtre le contraire. Dans tous les cas, la comprĂ©hension ne vient souvent qu'aprĂšs quelques sĂ©ries d'explications des deux cĂŽtĂ©s.


Peur de bouleverser l'auteur MR


Il arrive que le développeur soit contrarié si le réviseur insiste sur certains changements. Cependant, le plus souvent, les développeurs sont contrariés à cause de la forme du commentaire, et non à cause du contenu. Soyez poli, expliquez avec des arguments, et trÚs probablement tout ira bien.


"Je vais le réparer plus tard."


Si le développeur convient qu'il y a un problÚme dans le code, mais demande MR, promettant qu'il le réglera une autre fois, alors, de l'avis des gars de Google, ce "plus tard" ne se produit le plus souvent jamais. Par conséquent, si MR n'est pas un correctif de bogue urgent, vous devez insister sur un correctif.


Conclusions


J'ai vraiment aimĂ© ce document de Google. Surtout la vie hack avec le mot "nit", l'accent mis sur la vitesse de rĂ©vision du code, et aussi que MR ne devrait pas ĂȘtre parfait. Cela semble simple, mais tant que cela n'est clairement pas pris en compte, cela n'atteint pas le but.


Si cet article semble intéressant pour les lecteurs et recueille un certain nombre d'avantages, j'écrirai la partie suivante: le processus de révision du code par l'auteur MR.


Mise Ă  jour: la deuxiĂšme partie de l'article ici


De plus, dans le prochain numéro de Zinc Sale, nous discuterons en détail du code de révision sous différents angles. Assurez-vous donc de vous abonner à notre podcast de développement!

Source: https://habr.com/ru/post/fr473308/


All Articles