117 votes

Comment voulez-vous effectuer des revues de code?

Comment sont code examens effectués sur votre équipe de développement?

Je suis développeur depuis plusieurs années maintenant dans plusieurs sociétés différentes et j'ai remarqué qu'il n'y a pas d'approche uniforme pour effectuer des revues de code.

Dans mon entreprise actuelle, la révision du code sont inexistantes, ce qui a conduit à une diminution significative de la qualité du code. Lors de précédents travaux, la révision du code variait de seulement de s'assurer que les normes de codage ont été appliquées de type nazi, ligne par ligne, les commentaires qui a pris des jours pour terminer.

Alors je me demandais ce que c'est comme pour tout le monde là-bas. Et en particulier, quels outils utilisez-vous pour effectuer les examens? Et pensez-vous que la révision du code de l'aide plutôt que d'ajouter à la longueur de temps nécessaire pour un projet donné?

Je suis pour la révision du code que je crois qu'ils sont un moyen efficace de repérer rapidement les problèmes dans le cycle de développement, et ils peuvent aider les programmeurs débutants deviennent de bons programmeurs, de bons programmeurs de devenir de grands programmeurs, programmeurs géniaux devenir d'excellents programmeurs et ainsi de suite et ainsi de suite.

Jusqu'à maintenant, je n'ai vu que des revues de code fait manuellement via les commentaires dans les documents Word et Excel....mais, tout récemment, j'ai vu une annonce sur ce site pour un produit appelé Code de Collaborateur et il semble être une bien meilleure façon de faire des revues de code.... Une fonctionnalité intéressante, j'ai remarqué, c'est qu'il peut forcer la révision du code à exécuter avant que le code ne peut être engagé...

A quelqu'un ici jamais utilisé ce produit ou un similaire? Et si oui, avez-vous trouvé cela rend le processus de faire des revues de code plus facile?

82voto

Foredecker Points 5784

Les équipes autour de Microsoft à utiliser une variété de différents CR méthodes. Certaines équipes sont très formelles, d'autres plus informelles. À ma connaissance, toutes les équipes font une forme de revue de code ou d'une autre

Notre équipe a tendance vers une plus informels de l'examen du code de style. De nouveaux morceaux de code, de grande taille ou complexes des changements d'aller d'abord à travers un face à face de marcher à travers. Plusieurs d'entre nous se réunissent dans une salle de conférence et l'auteur des promenades tout le monde à travers les changements. Le point est de s'assurer que tout le monde comprend pourquoi l'auteur a fait des choses qu'ils façon dont ils ont.

Avant une promenade à travers, les participants doivent avoir lu toutes les spécifications et autres documents et traversé le code sur leur propre. La promenade à travers la est plus pour répondre à des questions de compréhension et de fournir des commentaires constructifs. Comme le dev manager, j'ai vraiment décourager les commentaires sur le style de cette rencontre: nos équipes ont bien défini et documenté les normes de codage que les gens devraient suivre. Nous ne sommes pas draconiennes à ce sujet, mais nous allons annuler une promenade à travers si moi-même ou de l'un des fils abat le code n'est pas prêt pour une promenade à travers en raison de problèmes de style.

Après la promenade à travers, d'autres commentaires sont gérées par e-mail. Nous n'avons pas officiellement suivi de la commentaires - e-mail fournit suffisamment d'enregistrement.

Nous utilisons développeur branches pour chaque personne, donc, des gens réellement enregistrer les modifications dans leur direction avant de la revue de code. C'est plus facile que d'essayer de garder les changements de notre système de contrôle de code source avant qu'il soit examiné.

Les membres de l'équipe de l'envoi des modifications basées sur l'examen du code de la rétroaction aux autres membres de l'équipe dans ce que nous appelons un "BBAPCK". C'est un ensemble de modifications qui peuvent être consultés, comparable ou appliquées temporairement pour une copie locale de la base de code. Habituellement, le plomb approuver la version définitive de BBAPCK pour l'intégration dans le parent de code de la branche.

Des changements progressifs pour les corrections de bugs ou de petites améliorations sont simplement manipulés par e-mail. Ou d'un rapide "sur l'épaule" de la revue de code.

Dans votre question, vous utilisez le terme "force". Je suggère que si vous avez à la force des membres de votre équipe pour faire quelque chose en leur imposant des outils et des processus sur eux, alors vous avez de culture d'équipe, la discipline, ou de la direction des problèmes à résoudre.

Pour notre équipe, la dev général a le pouvoir discrétionnaire des modifications qu'il va faire de CR de la rétroaction. Mais, le conduit et la haute devs peuvent exiger certaines choses. Nous n'avons pas de règles sur ce point - culture d'équipe lecteurs. Nous n'ont presque jamais eu un désaccord sur la CR de la rétroaction. Nous avons une culture, de fournir une bonne rétroaction constructive. CR de la rétroaction est conditionnée utile; tout ce qui rend le code meilleure est la bonté.

Ce poids léger processus fonctionne bien pour nous: Nous avons assez de processus pour repérer les bugs dans les CRs, mais il est léger poids assez pour nous de se déplacer rapidement et d'être efficace.

Notre plus grand défi est de prévoir du temps pour le CRS... même si nous faisons beaucoup par e-mail, certains CRs prendre beaucoup de temps. C'est difficile à prédire, et le calendrier. Mais, nous avons la priorité CRs très - rarement à sauter pour répondre à l'annexe. Bien que cela arrive.

J'ai travaillé dans des sociétés où la révision du code absolument sucer. Nous avons passé de façon plus de temps à discuter sur les questions de style comme le nom des variables, ou lorsque des accolades aller encore plus importants sujets. Bien sûr, compatible le style est important, mais en se concentrant sur l'exactitude, la fiabilité, la performance, l'efficacité et la facilité de maintenance est de façon plus importante que le style.

Nous gardons le code dans l'équipe de style en encourageant les gens à le faire: Si quelqu'un rentre un peu "moche" du code, le chef de simplement il fixe.

J'ai un projet où le code de base (environ 90K lignes de code) a trois styles distincts. Cela est dû à plusieurs choses: 1) j'ai eu un membre de l'équipe (qui n'est plus avec nous) qui refusaient tout simplement à suivre l'équipe de style. Nous n'avons pas eu le temps d'aller le re-formater tout son code. 2) Certains de nos code suit un autre équipes de style parce qu'il est basé sur leur code.

De mon point de vue sur le style, c'est qu'il doit être cohérent dans chaque module et les modules associés, mais il n'est pas trop problématique si elle varie un peu. Cela est vrai pour l'un de mes équipes. Le XPERF outils de l'équipe est très différent - il est très important pour eux que leur code est très style cohérent pour tous les modules. Cela fonctionne très bien pour eux.

En tant que responsable du développement, je trouve cela important d'être flexible ici et laissez-les équipes (et certaines personnes) ont la liberté de fixer leurs propres règles de codage et de normes. Il est important pour les développeurs et à la fin de la journée; les devs qui ne sont pas déformés sur les directives de codage profiter de leur mieux travailler et d'accomplir plus de travail.

Maintenant, certaines choses ne sont pas à gauche jusqu'à des équipes ou des devs. Dans windows, nous avons de nombreuses pratiques et les exigences que nous suivons avec exigeante discipline. Par exemple, tous les code de produit doit être entièrement localisation. De nombreuses pratiques autour de la sécurité et la fiabilité sont toujours respectés. Personne ne saisines sur ces parce que nous savons tous à quel point ils sont importants.

Nous vérifier ces choses à l'aide de quelques outils très sophistiqués qui, maintenant navire dans Visual Studio 2008. D'autres sont vérifiés dans nos revues de code.

J'encourage tout le monde à travailler avec leur équipe afin de trouver un jeu de CR des pratiques et des habitudes qui fonctionnent bien pour l'équipe. Si vous êtes un gestionnaire, je vous encourage à prendre une "main" avec en poussant ce que vous vous sentez peut-être la bonne chose, malgré les objections de votre équipe. Bien sûr, vous devez exercer votre jugement et de votre expérience à l'équipe, mais les combats sur CR les pratiques et les questions de style peuvent ruiner une bonne équipe, j'ai vu cela se produire.

À la fin de la journée, de se concentrer sur deux choses:

  1. L'expédition du code qui offre ce que vos clients veulent; est fiable, fonctionne bien et répond aux autres exigences.
  2. Le maintien d'un plaisir et un milieu de travail enrichissant pour votre équipe. Après tout, le codage est amusant après tout. Si c'est pas le cas, votre équipe de gestion est horked.

Efficace révision du code de pratiques peut être une force très positive pour ces deux objectifs.

20voto

Tim Points 13334

http://www.amazon.com/Handbook-Walkthroughs-Inspections-Technical-Reviews/dp/0932633196

N'ayez pas les yeux plus gros que le ventre - démarrage simple et impliquer ceux qui sont prêts à essayer. une fois que vous commencez à la publication des résultats et les gens commencent à voir de bons résultats, alors il va se développer sur son propre. Ne pas forcer ou essayer de convaincre les gens, c'est une bonne idée. Éduquer, mais ne vous attendez pas ou demande de conformité.

Démarrer avec votre propre code - demander aux gens de le revoir.

Bonne chance.

Laissez-nous savoir comment ça s'est passé.

J'ai lancé il dans un petit groupe, j'ai réussi - il a tourné autour d'un groupe qui était considéré comme le mouton noir avec un mauvais processus et de mauvaise qualité dans le groupe de tête et sans défauts livrés aux clients. Nous avons commencé à avoir demandé à ce que nous avons fait.

Cela était dû au groupe de convenir de l'essayer et de travailler avec elle. Nous avons été flexible et a tenu la réunion de courte durée et productif.

Avoir du plaisir avec elle.

16voto

Glenn Points 3787

Vous pourriez ne pas entendre cela, mais, à mon humble avis, la révision du code aller de pair avec les normes de codage. Si vous effectuer des revues de code et vous n'avez pas de normes publiées, alors le ton de l'examen peut prendre sur la sensation d'une inquisition.

Publier des normes en premier. Si quelqu'un fait un point dans l'examen et il n'est pas couvert dans la norme et tout le monde pense que le point est valide, alors que vous l'ajouter à la norme.

Si des codeurs sais qu'il y a une norme et de savoir que la norme sont appliquées par le groupe, puis des codeurs vont conclure que le processus est juste et sont plus susceptibles de suivre la norme. Espérons-le, c'est un bon standard. Pas trop détaillé et pas trop de vagues. Qualité globale devrait augmenter.

9voto

Matt Quail Points 3391

En plus de Code Colaborator, vous devriez également considérer le Creuset. (Gros disclaimer: je suis un Creuset de développeurs.)

Il y a un tas d'avantages à faire des revues de code:

  • Spot bugs au début. Le coût de la correction d'un bug augmente en général avec le temps entre le moment où le bug a été introduit et quand il a été détecté.
  • Le mentorat. La revue de Code est une bonne occasion pour les développeurs expérimentés de partager leur sagesse avec les développeurs juniors.
  • Apprendre par l'exemple. Lorsqu'un développeur junior examens développeur senior du code, ils ont l'occasion de voir comment le développeur senior résout les problèmes, etc.
  • Meilleur code de connaissances (en bas numéro de camion). Quand tout le monde arrive à voir tout le monde d'autre code, la chance qu'une seule personne sait comment un sous-système fonctionne est réduite.

Dans mon entreprise actuelle, la révision du code sont inexistantes

Il peut être facile de démarrer un code d'examen de la culture de votre entreprise, parce que lorsque le code-les commentaires deviennent indolore ils ont également devenir addictif. Et à l'aide d'un outil peut vraiment aider à réduire la douleur.

6voto

Stewart Johnson Points 7632

J'ai travaillé dans un processus lourd de l'organisation, et la vue d'ensemble des inspections de code était comme ça:

  • chef de projet identifie 4 personnes pour faire l'inspection qui sont identifiés avec les rôles de l'Auteur, le Leader, le Scribe et le Testeur.
    • Auteur - personne qui a écrit le code
    • Chef de file - , la personne qui organise l'inspection de réunion et de "runs" de la réunion (par exemple: se remettre sur les rails si d'un côté la discussion qui prend le dessus)
    • Scribe - la personne qui écrit tous les commentaires, prend des notes sur les Tâches du gestionnaire de projet, architecte, etc.
    • Testeur - représentant de l'équipe de test
  • Chef de file organise l'inspection) permet de s'assurer tout le monde a accès à la version correcte de la partie du code source, avec l'appui d'artefacts (reqs, conception de documents, etc)
  • Tout le monde se prépare pour l'inspection par la lecture du code et la prise de notes.
  • Toutes les erreurs évidentes sont collectées hors ligne (pas dans une réunion), de sorte qu'ils n'ont pas à être examiné lors de l'inspection de la réunion (ce qui serait une perte de temps)
  • Si tout le monde accepte le code est prêt pour l'inspection, la réunion va de l'avant
  • Quelqu'un (pas de l'auteur) lit le code, tout le monde discute de bugs/problèmes de conception, etc. Scribe a écrit tout en bas (nous avons eu un formulaire standard pour que).
  • À la fin de la réunion, tout le monde est d'accord sur une "disposition" pour le code:
    • Passé - code est bon d'aller
    • Passé à retravailler le code est bon, aussi longtemps que les petits changements sont fixes
    • Ré-inspecter - résoudre des problèmes et d'avoir une autre inspection
  • Après la réunion, l'auteur corrige les erreurs et les contrôles dans la nouvelle version.
  • Si c'est passé avec les retravailler ensuite chef vérifie les bugs que le scribe a écrit vers le bas et permet de s'assurer qu'ils sont tous fixes.

Il n'y a plus de charges, mais c'est la base jist. C'était un CMM niveau 5 la société, donc ils ont recueilli des statistiques sur LoC-inspectés par heure et utilisé que de prédire combien de temps d'inspection d'un nouveau projet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X