L'équipe de ma nouvelle entreprise ne dispose pas d'un processus de révision du code.
Je viens d’entreprises dont la culture du code est une culture incontournable et je ne me sens donc pas à l’aise d’engager mon code sans le faire réviser par quelqu'un.
Je crois fermement que la révision de code est un moyen d'améliorer la qualité et de gagner du temps, car elle détecte les problèmes potentiels plus tôt (remarque, je ne parle pas de la programmation en binôme cependant).
- Comment puis-je montrer que l'examen de code n'est pas une perte de temps, mais un gain de temps?
- Peut-on ignorer la révision du code si vous avez des tests unitaires?
code-reviews
jparkcool
la source
la source
Réponses:
Mais pourquoi?
Le rôle principal de l'évaluation par les pairs n'est pas de détecter les bogues.
Oui, vous pouvez identifier des bogues potentiels et du code douteux, source de bogues, cela se produit souvent, mais détecter quelques erreurs parfois ne signifie pas que l'examen par les pairs est un moyen fiable d' éliminer la présence de bugs. Loin de ça. Ce n'est pas le bon outil pour vérifier l' exactitude fonctionnelle de la mise en œuvre.
La révision de code impose la maintenabilité du code , cependant. J'exigerai que le code soit propre et compréhensible (pas seulement pour son auteur) avant de passer en production.
La présence de tests unitaires est complètement orthogonale à cela. Vous pouvez avoir une couverture de code à 100% et tous les tests réussis pour un code totalement incompréhensible.
La révision de code sert également à familiariser les autres développeurs avec votre travail afin qu'ils sachent ce qui est quoi et puissent le récupérer, ou qu'ils gèrent les rapports de bugs pendant vos vacances, etc. Savoir ce que vous avez fait tout de suite peut les aider. font bien leur travail - gardez la base de code cohérente (respectez les mêmes schémas et conventions dans l'application) ou évitez la duplication de code.
De manière plus générale, on apprend et grandit en tant que développeur en lisant le code des autres.
Les tests unitaires peuvent difficilement remplacer n'importe lequel d'entre eux. Oui, s’ils sont bien écrits, ils se lisent comme de la documentation et nous devrions nous efforcer de le faire. Mais là encore, l’examen par les pairs n’est pas exclusif, bien au contraire: tous les avantages de l’évaluation par les pairs restent valables, le fait que vos pairs aient de bons tests unitaires à examiner ne fera que rendre le processus de révision plus facile et encore plus bénéfique. plutôt que redondant.
la source
Peer review doesn't even attempt to tackle this important aspect
- ben oui , en quelque sorte. Dans une mesure. Je me retrouve souvent à signaler par exemple. "Partenaire, vous répétez effectivement la même logique ici, et c'est une bombe à retardement. Un jour, cela changera à cet endroit et nous oublierons de l'actualiser ici ..."Je n'en connais aucun. Il est également difficile de mener de telles études car il vous faudrait deux équipes dont la tâche est d' une complexité égale et réaliste , l'une utilisant la révision de code, l'autre non. Vous aurez probablement besoin de leur demander de résoudre le même problème, ce qui signifie jeter beaucoup d’argent par la fenêtre. Et vous auriez besoin de répéter l'expérience assez souvent pour obtenir une pertinence statistique, ce qui augmenterait cet investissement d'argent par des ordres de grandeur.
Si vous ne mesurez que l'efficacité des entreprises qui utilisent des révisions de code par rapport à des entreprises qui ne le font pas, vous ne savez pas seulement comment mesurer l'efficacité, mais également quelle en est la cause réelle. Les revues de code font partie d'une culture plus large. Il est difficile de dire quelle partie de celle-ci rend réellement l’équipe plus efficace (et peut très bien dépendre de la nature de l’équipe ou du projet). Ou encore, la présence de cette culture peut simplement signifier que la société est plus petite ou plus jeune, chacune d’elles ayant de nombreux effets. Ou bien il se peut que la volonté de se soumettre à des révisions de code exclue ou favorise une distance saine de votre ego;)
Mais n'oubliez pas: vous avez votre propre expérience à tirer. Cela fait partie de la raison pour laquelle ils vous ont embauché. Donc, si vous croyez vraiment que vous pouvez augmenter l'efficacité (et que votre équipe en souffre réellement), communiquez-le clairement.
Nan. Si vous croyez en l'importance des tests, alors vos tests devraient être la première chose à examiner. Et si ce sont des bêtises? Ou si la couverture est moche? Ou s'ils testent la mise en œuvre plutôt que le comportement?
la source
return true;
.Tiré de diapositives aléatoires que j'ai trouvées , mais les données concrètes proviennent du livre Code Complete de Steve McConnell:
Ce chiffre de 60% provient du document de l'IEEE rédigé par Shull et al, 2002, intitulé Ce que nous avons appris sur la lutte contre les défauts, contient la section suivante:
la source
Disclaimer: Cette réponse est mon expérience personnelle :)
J'ai fait de très mauvaises expériences avec les révisions de code dans le code que nous maintenons. Parce que nous n’avons généralement qu’une ou plusieurs doublures et qu’il n’ya pas grand chose à revoir.
Mais dans le cadre de projets concrets, j’ai fait de bonnes expériences, au moment de l’examen, mon formateur revoyait régulièrement mon code et cela m’a beaucoup aidé à trouver les erreurs que je faisais très souvent, que je ne fais plus.
Je dirais donc que cela dépend fortement de ce que vous faites, du nombre de personnes que vous êtes, etc.
De plus, le risque que vos codereviews aboutissent à une guerre ne doit pas être sous-estimé.
la source
Vous pouvez demander à votre chef d'équipe et / ou à votre collègue de réviser votre code par les pairs, même si les révisions de code ne sont pas effectuées normalement, peut-être dans le cadre de votre formation.
Assurez-vous que votre code est bien écrit et testé avant l'examen.
Lorsque j'étais chef d'équipe, j'avais l'habitude de réviser moi-même les codes des nouveaux employés, jusqu'à ce que, au bout d'un moment, j'arrête de chercher des bogues ou quoi que ce soit d'autre à critiquer dans leur code, et à quel point je cesserais de réviser les codes avec eux; cela arriverait quand:
Les revues de code ont plusieurs objectifs:
Je pense que c'est bien de réviser les codes des nouveaux employés, même si l'équipe choisit de ne pas les réviser parmi les membres expérimentés.
la source
Il n’existe pas de règle empirique permettant de réviser le code de tout logiciel développé ... Tout dépend de la portée de l’application, de la taille du client et de la taille de la société. Par exemple, si vous construisez une application pour laquelle il s’agit d’une application simple pour laquelle aucune autre version ne sera éventuellement implémentée à l’avenir, les tests unitaires y suffisent. Mais encore une fois, l'examen du code se met en place lorsque vous parlez de performances de l'application. Vous devez donc examiner le code pour éviter toute chute brusque de celui-ci, ce qui aurait pu être fait de manière à accélérer les performances.
Les révisions de code sont généralement effectuées lorsqu'il y a une équipe de plus de 2 développeurs et un responsable technique où le responsable technique veut assurer la qualité de l'application et s'assurer que les normes de code sont respectées pour adapter l'application aux futures améliorations et la mettre à niveau pour différents utilisateurs. versions à venir.
Par exemple, nous avons maintenant de nombreuses plates-formes open source CMS et ces plates-formes publient des mises à niveau de temps à autre pour améliorer les fonctionnalités de la plate-forme. Imaginez un développeur utilisant l'une de ces plates-formes et ne respectant pas les normes de code telles que le codage en dur dans les fichiers de base, l'écriture d'applications. code dans les fichiers de modèle et si ce code passe en production et ultérieurement, lorsque le client souhaite mettre à niveau la plate-forme vers la nouvelle version, il ne sera jamais mis à niveau à moins que le codage ne soit refait conformément aux normes de code de cette plate-forme. Cela devient un problème sérieux pour la publication du code en production sans révision du code.
Je dirais donc que les critiques de code avant publication sont indispensables pour les éditeurs de logiciels professionnels et que les exceptions ne peuvent concerner que les applications personnelles / à très petite échelle, où le développeur est un programmeur très expérimenté et qui possède de l'expérience.
la source
Les révisions de code ont des avantages qui ne proviennent pas du processus de révision lui-même: il existe toujours un dilemme pour obtenir un code de haute qualité, mais créé en peu de temps. Sans révision de code, vous êtes autonome, vous pouvez donc sacrifier la qualité pour effectuer le code en peu de temps. Avec les critiques de code, il y a ce critique qui ne vous laisse pas vous échapper avec une qualité de code faible - ce qui est exactement ce que vous voulez, être obligé de passer du temps à obtenir un code de qualité qui est ce que vous vouliez en premier lieu, et qui vous savez que vous gagnerez du temps, car chaque heure passée à écrire un code de meilleure qualité équivaut à deux heures de débogage (ou plus).
Sans révision de code, vous êtes autonome. Il vous appartient donc de maintenir une qualité de code élevée. Une solution simple consiste à examiner chaque changement que vous apportez vous-même et à corriger les problèmes non conformes à vos normes de qualité.
Cela évite également les situations horribles dans lesquelles les critiques de code entraînent des conflits d’égoïsme - la situation dans laquelle le programmeur A utiliserait la méthode X, tandis que B utiliserait la méthode Y; si A écrit le code qu’il utilise la méthode X, le relecteur B insiste sur la méthode Y, donc A réécrit le code en utilisant la méthode Y, alors que si B l’avait écrit et qu’il l’avait examiné, c’était exactement le contraire qui s’était passé.
la source
Si vous êtes un partisan des révisions de code, je crains qu'il n'y ait pas de véritable substitut. Le cas malheureux et stéréotypé est un lieu de travail qui n'effectue pas de révision de code car (A) il n'est pas familier avec la pratique et / ou (B) il ne veut pas consacrer le temps et les efforts nécessaires à la révision de code système en place.
Fondamentalement, pour obtenir ce que vous voulez ici, vous avez besoin d'un changement de culture sur le lieu de travail - et ce n'est jamais simple ni facile. N'oubliez pas que même si votre lieu de travail est persuadé à 100% que les révisions de code sont excellentes et qu'il souhaite les adopter, il faudra encore beaucoup de temps, d'énergie et de productivité pour adopter une nouvelle méthode de travail. Cet investissement devrait être rentable - mais vous devez avoir un investissement pour l'investissement, pas seulement pour le gain. Voir la vidéo de Roy Osherove "Test unitaire et TDD - Comment y arriver" - les défis de l'adoption de révisions de code sont très très similaires à ceux de l'adoption d'un test unitaire.
En attendant, faites ce que vous pouvez pour en obtenir le plus possible:
L'un des principaux avantages de ces solutions est que, si vous êtes en mesure de les conserver au fil du temps, les développeurs autour de vous commenceront à remarquer les révisions de code. Vous montrerez efficacement comment les révisions de code peuvent être intégrées à la culture existante - et cela ouvre la voie à un changement de culture. Les révisions de code vous aident . Ainsi, si vous êtes en mesure de démontrer cela à petite échelle, cela ouvrira la voie aux autres - et à la culture dans son ensemble - pour qu'ils suivent votre exemple.
la source
Arrêtez de vous inquiéter, votre nouvel employeur ne se soucie pas des critiques de code. Apprenez à avoir confiance en vos capacités sans que quelqu'un d'autre ne vous dise qu'il est correct de vérifier le code que vous avez écrit. Vous allez bientôt apprendre à vivre sans le processus fastidieux et fastidieux qui consiste à examiner le code d'autres personnes.
Suivez les directives de style (ou tout simplement le style) que tout le monde utilise. Utilisez votre expérience pour décider de ce qui doit être commenté, des conventions de dénomination à utiliser, etc.
Puis testez tout avant de l’archiver. Le plus important est que cela fonctionne correctement.
la source
Si votre nouvel employeur n’apprécie pas l’idée de révision du code, c’est peut-être parce qu’il est associé de manière négative aux méthodologies obsolètes de type commande et contrôle et qu’il vise un ensemble de pratiques de type plus moderne et agile. Dans ce cas, ils peuvent être plus ouverts à l’idée de la programmation en binôme, qui offre nombre des mêmes avantages et qui est largement considérée comme une pratique moderne plus dynamique.
la source