Que contient une révision de code standard?

19

Dans mon entreprise, c'est une discussion par e-mail sur la fonctionnalité implémentée et le type de bug corrigé envoyé par celui qui écrit le code. Et le réviseur, qui reçoit le courrier, examinera le code et discutera de la qualité et de la façon de modifier le code à son avis. Que contient une révision de code standard?

Nicole
la source
10
Ici, apparemment, nous n'avons pas le temps de réviser le code, mais beaucoup de temps pour faire face aux erreurs qui en résultent. Je souhaite que je plaisantais.
MetalMikester

Réponses:

12

D'après mon expérience, la plupart des revues de code formelles impliquent la vérification de style parce que c'est facile. Même lorsque vous fournissez une liste de contrôle des choses à regarder, il est assez facile pour les yeux de commencer à émailler.

J'ai trouvé que l'examen des tests unitaires offre plus d'avantages. La plupart des développeurs avec lesquels j'ai travaillé ne savent pas vraiment comment tester les unités correctement, et une fois qu'ils ont ce "Aha!" dès que le reste de leur code commence également à s'améliorer. Voici un indice: ce n'est pas un test unitaire si vous demandez à l'utilisateur d'inspecter quelque chose, et ce n'est pas un test unitaire si vous commencez simplement quelque chose à exécuter dans un débogueur.

Berin Loritsch
la source
LOL, une bonne compréhension des tests unitaires est un must. Et la bonne nouvelle est que les tests ne sont que du bon sens - il faut moins de temps pour comprendre que de dire ... le temps qu'il faut pour choisir une nouvelle langue.
Job
Je me retrouve à tergiverser quand il y a un manque de couverture des tests unitaires. Quand je vois des tests unitaires dans une revue de code, c'est le premier endroit où je regarde. Si je vois que les tests unitaires atteignent les exigences commerciales et les cas de bord sensibles (vérifiez les valeurs nulles le cas échéant, les tests aux limites sur les plages de valeurs), alors j'ai tendance à ne pas choisir - ce qui ne signifie pas que vous devriez choisir de petites choses . C'est juste que la "preuve est dans le pudding". Il est difficile de contester les tests unitaires bien construits qui réussissent.
Greg Burghardt
6

Il a tendance à varier en fonction du problème. Souvent, c'est un simple tampon en caoutchouc. "Voici quel était le problème, regardez cette ligne ici, c'est évident ce qui ne va pas, et voici où je l'ai résolu." "Ouaip, c'est assez évident. Allez-y et vérifiez-le."

Mais quand quelque chose de plus complexe se passe, cela se passe généralement comme suit:

  • Exécutez Vérifier les modifications sur TortoiseSVN et obtenez une liste des fichiers modifiés.
  • Amenez l'examinateur dans votre bureau.
  • Expliquez le problème, avec le CR du système de suivi des bogues ouvert pour référence.
  • Descendez la liste des fichiers dans TortoiseSVN, en ouvrant chacun d'eux dans BeyondCompare pour voir les changements.
  • Si le réviseur ne comprend pas les changements, expliquez ce que vous avez fait et pourquoi.
  • L'évaluateur peut remarquer quelque chose qui ne semble pas bon. Si tel est le cas, discutez-en jusqu'à ce que vous parveniez à un accord sur l'opportunité de le modifier. (Si de simples modifications doivent être apportées, vous pouvez même modifier le fichier à l'intérieur de BeyondCompare.)
  • Si vous avez apporté des modifications, recompilez-le et assurez-vous qu'il se compile!
  • Exécutez le programme pour démontrer au réviseur que votre correctif fonctionne réellement.
  • Enregistrez-le.
Mason Wheeler
la source
4

IMO, Une revue de code n'a rien à voir avec les fonctionnalités ou les bugs, mais se concentre sur la qualité du code et des tests écrits pour lui.

Alors, asseyez-vous à côté de votre pair et demandez-lui d'expliquer le code, ou prenez le code et passez-le en revue, quelle que soit la situation.

Cela aide quand tout le monde programme selon les mêmes normes et si vous utilisez des outils comme fxCop pour automatiser une partie du processus.

Syg
la source
2

Je préfère la révision du code où le développeur s'assoit avec le réviseur et passe en revue le code ligne par ligne pour l'expliquer. Souvent, le développeur verra un problème à faire l'explication que le critique n'a peut-être pas encore vu, c'est pourquoi c'est ma préférence. Je fais également des révisions de code où je reçois le code et le lis moi-même et fais des commentaires, mais je trouve que cela a tendance à prendre plus de temps (je passe en revue et rédige des commentaires et envoie au développeur qui les lit et va WTF veut-elle dire et envoie des courriels moi de retour et j'explique et deux ou trois tours plus tard, nous nous réunissons et je souligne à l'écran ce que je veux dire et le dev dit, "oh ouais maintenant je le vois.") et être moins productif car il y a moins de discussion authentique et plus, "Vous avez mal agi."

Il est également essentiel d'appliquer les normes dans une révision de code, mais pas d'en faire le seul objectif.

Cependant, le code n'est pas envoyé en production tant que le réviseur de code n'est pas satisfait ou que le gestionnaire (pas le développeur) ne l'a annulé (les réviseurs de code se sont également trompés). Ceci est critique ou la révision du code n'est qu'un processus bureaucratique sans valeur ajoutée, sauf si le réviseur de code doit approuver le code final avant de le pousser.

HLGEM
la source
Je suggère toujours de laisser au développeur ce qu'il fait avec les commentaires de la revue. L'évaluateur ne sait pas nécessairement mieux et lorsque l'accord est obligatoire, vous devrez peut-être investir un peu de temps pour éduquer l'évaluateur. J'envisagerais cependant une vérification finale de «l'intégration» par un développeur principal / principal.
Joppe
0

Vous devez d'abord avoir des normes de codage et ce sont plus qu'une simple syntaxe. Lorsque les gens commencent dans votre entreprise, ils doivent apprendre autant que possible les directives de votre entreprise avant de commencer à coder . Si au cours du processus d'examen, toutes sortes de violations sont détectées, elles seront très probablement:

  • ne pas être fixé en raison de contraintes de temps
  • trouvé plus ennuyeux que ce que valent les lignes directrices

Les lignes directrices devraient avoir un sens et il devrait y avoir un outillage approprié pour trouver les violations et refactoriser le plus facilement possible. Regardez toujours l'objectif des directives et la révision du code

Le but dans mon esprit est de rendre le code aussi uniforme que possible et de trouver des problèmes de maintenabilité et de lisibilité. Un objectif secondaire peut être de mettre plus de gens au courant avec un certain logiciel.

Les lignes directrices dans mon esprit pourraient par exemple exister:

  • syntaxe générale et directives de codage (choisissez-en une qui existe déjà et utilisez des outils qui vérifient automatiquement)
  • Traitement correct des exceptions
  • Journalisation appropriée
  • Bonne utilisation des paradigmes pour la langue (SOLID pour les langues OO)
  • Dépendances évidentes et bien pensées entre les composants (utilisez des outils comme NDepend)
  • Script de construction fonctionnel
  • Documentation présente (démarrage développeur, manuel d'installation)
  • bibliothèques internes à utiliser
  • politiques de l'entreprise
  • outillage tiers non autorisé
  • Tests unitaires présents et non défaillants
  • couverture de code de 90%
  • ...

Avec cela en place, l'examen du code consiste à vérifier le logiciel par rapport aux directives et à:

  • discuter des violations avec le programmeur
  • corriger les violations inutiles
  • commenter les violations nécessaires
KeesDijk
la source