web-dev-qa-db-fra.com

Les critiques sont-elles nécessaires pour les développeurs juniors?

J'ai travaillé chez deux sociétés, qui avait chacune une méthodologie différente lorsqu'elle est arrivée aux commentaires:

Dans la première entreprise, une revue de code a été réalisée par les chefs d'équipe et était nécessaire après la fin de chaque module.

Cependant, dans la deuxième entreprise, les chefs d'équipe n'étaient pas obligés de mener des critiques de code et vient de vérifier les problèmes de fonctionnalité et de conception.

Donc je suis confus. Le processus de révision du code est-il vraiment nécessaire? Si c'est le cas, pourquoi? Et si ce n'est pas le cas, pourquoi pas?

40
Sankar Ganesh

Personnellement, je pense que chaque morceau de code devrait passer par un examen de code, peu importe si vous êtes un développeur junior ou senior.

Pourquoi? Pour commencer, votre titre n'indique rien de la manière dont vous développez et un développeur senior pourrait apprendre quelque chose du junior. Lors de notre entreprise, nous déplacons donc l'un des autres membres de l'équipe revoir votre code ... surtout nous sommes associés à un "junior" et une senior ensemble, donc toutes les choses qui ne sont pas dites quotidiennement peuvent être pris dans un suivi. Si le Senior n'aime pas le code junior, il devrait écouter pourquoi le junior l'a fait comme il l'a fait et le regardait et voyez si c'est une solution réalisable qui pourrait être utilisée à l'avenir ... c'est une question de devenir plus sage, peu importe qui tu es.

Une chose importante à propos de l'examen du code n'est pas trop agréable, si vous êtes un gars sympa, vous autoriserez un code de plus en plus désordonné à évoluer dans le système. Juste comme hier, j'ai commencé à retravailler une demande complète qu'un ancien Juniorvelopper employé a écrit et que mon Dieu aurait pu avoir besoin d'une critique avant son départ.

Je ne vois pas pourquoi ce devrait être la teamleader ne fait que faire des critiques mais nécessite une personne qui n'a pas entraîné de choisir un "combat" sur un code mal développé, et il doit s'agir d'une personne qui se soucie de la manière dont le code devrait être. Toutes les entreprises n'engagent pas des personnes qui se soucient réellement de ce qu'ils font et que ces mauvais œufs devraient ne pas être autorisés à faire des critiques de codes car ils sont probablement de hausser les épaules et de dire "OK" au mauvais code.

107
cyberzed

En gros, l'examen du code est nécessaire pour tous les programmeurs indépendamment de l'expérience. C'est le contrôle de la qualité du développement logiciel et l'une des raisons open source peut être de très haute qualité.

EDIT: La raison en est qu'un cribleur de code aujourd'hui est exactement le même rôle qu'un responsable plus tard. Si le code n'a pas de sens pour lui aujourd'hui, cela n'aura pas de sens plus tard, non plus, rendre les insectes plus chers à réparer. Par conséquent, faites-la comprendre aujourd'hui pendant que le développeur se souvient toujours du code. Le relecteur peut également voir des bugs ou des omissions que le développeur a manqué.

Malheureusement, très peu de gens veulent le faire, mais vus d'un point de vue commercial, il devrait être obligatoire.

37
user1249

Je travaille dans un endroit où l'examen du code est désormais une exigence, mais n'était pas aussi peu que 3 ans. Il a apporté une énorme amélioration dans notre code et dans la capacité des autres de maintenir le code plus tard. Même senior, des développeurs très expérimentés font des erreurs qui peuvent être réparées facilement et discrètement dans le contrôle de code avant que la QA ne les trouve ou pire avant que le client ne les trouve. Au moins une personne autre que le développeur orginal est familière avec le code.

Souvent, lorsqu'une organisation tente quelque chose de nouveau, comme nous l'avons fait avec le code de code, il y a beaucoup de résistance au changement. Je n'ai vu presque rien de tout cela (nous étions estatiques pour avoir également un département de QA officiel.) Avec examen de code. Il ne prend presque qu'une ou deux commentaires pour voir la valeur.

J'ai trouvé de nouvelles techniques que je n'avais pas envisagé à la fois à effectuer une revue de code du travail de quelqu'un d'autre ou à avoir examiné mon code. Nous avons trouvé des problèmes de compétences avec de nouvelles embauches relativement rapidement en prenant des critiques de code et sur la manière dont ils ont répondu à la révision du code. Nous avons appris ce que des choses qui semblent parfaitement claires en ce moment au cours de la programmation qui ne sera pas claire dans la maintenance. Ceci est inestimable. Il se peut que la seule chose nécessaire est un commentaire sur la raison pour laquelle quelque chose a été fait. Nous avons trouvé des malentendus fondamentaux sur notre conception de base de données qui devait être corrigée pour qu'un rapport ait réellement les informations correctes.

Souvent ce que j'ai vu dans une revue de code, c'est que, par l'acte même d'expliquer quelque chose à quelqu'un d'autre, le développeur aura une ampoule allumée dans sa tête et se rendra compte qu'il y a un bug que le critique n'a pas vu.

Et garçon peut coder Code Review Identifier ces programmeurs de cow-boys qui ne suivent aucune norme ou utilisent des outils mandatés et dont le code sera proche de l'éternelle d'autre. Et cela peut les forcer à obtenir avec le programme ou de sortir aussi.

Les personnes les plus résistantes à la révision du code sont souvent les personnes dont l'organisation doit la plupart doivent se débarrasser de car ils savent dans leurs cœurs leur code ne peut pas passer d'un examen de code.

17
HLGEM

Agile Guy dirait: "Vous n'avez pas besoin d'une critique de code, faites simplement une programmation de pair et d'écrire de bons tests" :)

11
Ilia K.

La revue de code est une bonne façon de propager la connaissance de la connaissance et des bonnes pratiques grâce à une équipe. Dans mon expérience, il est judicieux de vous assurer que tout le code est examiné et essayer de faire varier les examens du code.

Dans mon coéquipier actuel, le code de chaque équipe est examiné de manière égale, et le programmeur et le réviseur doivent être satisfaits du code avant de pouvoir être libérés. Ceci s'applique tout autant que les développeurs seniors examinés par des développeurs plus junior, un développeur junior examinant un autre ou d'autres développeurs seniors s'exvisionnant. Si le critique est inexpérimenté ou ne se sent pas à l'aise à une révision à l'aise d'une pièce de code particulière, ils s'attaqueront à un autre développeur (et peut-être aussi le développeur original) pour faire l'examen en tant que groupe.

8
flamingpenguin

Je suis dans l'entreprise depuis plus de 20 ans, travaillant pour des sociétés de logiciels et pour différentes entreprises et aucun de ces endroits n'avait un processus d'examen du code. Cependant, je peux comprendre et apprécier les avantages d'en avoir un. Essentiellement, comme je les comprends, ils devraient être utilisés pour assurer l'adhésion aux normes, qui devraient être suivies pour que d'autres puissent maintenir plus facilement le code à l'avenir. La lisibilité du code peut également être vérifiée dans un processus de révision, car cela garantira également que la maintenance peut fonctionner efficacement avec le code.

Actuellement, je travaille dans un petit magasin où je suis le développeur unique. De temps en temps, nous avons apporté des entrepreneurs pour aider à l'arriéré. Au moins un ou deux de ces entrepreneurs ont écrit du code qui ne rencontraient pas nécessairement les normes des miennes ou des sociétés, mais cela a bien fonctionné et était au moins quelque peu compréhensible. Quand j'ai signalé cette question à la direction, ils ne se souciaient pas, ils voulaient juste savoir si c'était ce que nous les avons payés. Donc, je suppose que cela dépend simplement de la société et de savoir si le code souhaité ou non facile à maintenir est le produit souhaité, ou si elles veulent simplement quelque chose qui fonctionne bien pour l'argent.

Évidemment en tant que développeur et qui doit maintenir le code, j'aimerais travailler avec un code de nettoyage qui suit une norme de quelque sorte, mais je n'ai pas toujours ce luxe, alors je tire le meilleur de cela et gérer ce que j'ai , même si cela signifie parfois avoir à ré-écrire du code dans ma propre norme.

5
user6061

Les critiques de code peuvent identifier les défauts plus tôt dans le cycle de vie du logiciel lorsque des problèmes sont plus faciles (et moins chers) à réparer. AT Smartbear Nous avons développé un outil d'examen de code de pair et avons également fait beaucoup de recherches sur la manière de rendre les revues de code efficaces. Sur la base des données de nos clients, les défauts trouvés dans la revue de code sont 8-12X moins cher à trouver et à résoudre que les défauts trouvés à QA. Les économies de coûts simplifient l'examen du code en vaut la peine, mais il y a plus de valeur que cela. Le code de code est un excellent moyen pour tous les membres de l'équipe d'apprendre et de s'améliorer en tant que développeurs de logiciels.

Certains pièges peuvent provoquer des critiques de code pour devenir moins efficaces et il semble que votre organisation soit prise dans l'une d'entre elles. Effectuez le code de code sur le code, pas le peuple. Les titres ne signifient rien dans un examen de code. Appelé à l'autorité (vous devez le faire de mon chemin parce que je suis le chef d'équipe) faire plus de mal que de bien. Enseigner à la place. Les ingénieurs principaux devraient expliquer pourquoi il devrait être fait de leur chemin, pas seulement demander à ce que ce soit. Si vous avez du mal à expliquer un concept, c'est une expérience d'apprentissage pour vous aussi. Vous aurez tous les deux de meilleurs développeurs pour l'effort que vous avez mis.

4
Brandon DuRette

Je pense que le code examinant tout code est surchargé. Le temps qu'il faut pour examiner tout le code pourrait être mieux dépensé ailleurs. Alterntivley Je pense que le code critique et ou en particulier des pièces complexes nécessitent une critique de code mais certainement toutes les lignes de code.

2
Gratzy

À mon avis, le code qui va être utilisé par une entreprise, qu'il soit écrit par un développeur junior ou principal, devrait toujours être examiné. Pourquoi? Parce que si le code a eu plusieurs bugs? Et si, pendant le temps, ce code était utilisé, le programme s'est écrasé? Pour empêcher ces choses de se produire, tout le code doit être examiné avant utilisation.

Mais qu'en est-il de ces entreprises qui ne revinnent pas le code? Ce sont probablement les entreprises qui ont beaucoup de problèmes de technologie et de nombreux problèmes, comme ils disent les consommateurs, "se bloque" ;-).

Alors laissez-moi répondre à toutes vos questions:

  • Oui, le processus d'examen est nécessaire.
  • Pourquoi? À cause des raisons que j'ai énoncées ci-dessus.
2
Dynamic

Quelle est la différence avec interférer avec vos idées avant de vérifier votre code (examen) ou ensuite en raison d'un bogue, d'être trop intelligent/difficile à comprendre, ou non des pratiques standard acceptées? Est-ce votre ego?

Vous ne pouvez pas négliger les mérites de l'examen de code ou quoi que ce soit d'autre, car il est mal mis en œuvre par un membre de l'équipe moins qualifié que vous ne respectez pas. L'examen du code n'est pas un processus extrêmement complexe que seuls quelques super programmeurs sont capables de saisir. Je ne suis pas sûr qu'il y ait de nombreux programmeurs ou auteurs professionnels capables ou ont le temps de changer de soi.

Vous êtes-vous déjà revenu à une ligne de code quelques mois plus tard et se demanda ce que je pensais? Il y aurait une meilleure chance de l'attraper avec un examen de code. Vous venez de l'attraper et que vous n'êtes que légèrement mieux que le programmeur, il y a quelque temps - j'espère.

1
JeffO

Bien sûr, l'examen du code n'est pas nécessaire. Là encore, les tests, l'intégration continue, le contrôle de la source, la participation du client, le profilage, l'analyse statique, le matériel décent, les constructions en un clic, le suivi des bogues, la liste se passe.

En plus des critiques de code, les choses que je mentionne ci-dessus sont des outils qui aident à assurer la qualité logicielle. Avec une combinaison de compétences, de chance, de temps et de détermination; Vous CAN Livrer un logiciel de qualité sans aucune de ces choses, mais il est plus probable que vous ne.

Dans votre scénario, il n'y a rien à confuser. Toutes les organisations ne se livrent pas à toutes les meilleures pratiques. Ils peuvent être en désaccord avec cela, cela peut entrer en conflit avec une autre pratique différente de la mise en œuvre, sinon on peut considérer que les frais généraux de la mise en œuvre sont trop grands pour eux à ce stade. Selon leur situation, ils peuvent être corrects, ou ils peuvent faire une fausse économie. Pour certains outils, (par exemple le contrôle de la source) Le rapport de récupération/effort est tellement bon que l'utilisation de celui-ci est une évidence; Pour d'autres, c'est moins clair.

Il ne fait aucun doute que l'examen du code est une pratique qui introduit une surcharge importante. Pour cette raison, les organisations chercheront à minimiser ces frais généraux, que ce soit en ne le faisant pas du tout, ou en le faisant seulement dans certaines situations (par exemple pour un membre de l'équipe junior, soit un changement particulièrement velu). Il n'est pas toujours évident que cela rembourse davantage (à accrocher des bugs, à réduire la dette technique ou au partage des connaissances) que les coûts informatiques. La majeure partie de cette récupération est difficile à quantifier, alors que c'est très facile à compter le nombre d'heures d'homme que votre organisation dépense de faire des critiques. Le bit le plus facile à quantifier (comptage de bugs réduit) est facile à attribuer à d'autres facteurs (par exemple, il dispose de moins de bugs, il est plus mature ").

1
Paul Butcher