Das Team in meiner neuen Firma hat keinen Codeüberprüfungsprozess.
Ich komme aus Unternehmen mit einer Codeüberprüfung als Muss-Kultur und daher fühle ich mich nicht wohl, meinen Code zu schreiben, ohne ihn von jemandem überprüfen zu lassen.
Ich bin der festen Überzeugung, dass die Codeüberprüfung eine Möglichkeit ist, die Qualität zu verbessern und Zeit zu sparen, da potenzielle Probleme früher erkannt werden (ich spreche jedoch nicht über die Paarprogrammierung).
- Wie kann ich zeigen, dass die Codeüberprüfung keine Zeitverschwendung, sondern eine Zeitersparnis darstellt?
- Kann die Codeüberprüfung bei Unit-Tests übersprungen werden?
code-reviews
jparkcool
quelle
quelle
Antworten:
Aber wieso?
Die Hauptaufgabe von Peer Review besteht nicht darin, Fehler zu erkennen.
Ja, Sie können möglicherweise einige potenzielle Fehler und zweifelhaften, fehleranfälligen Code identifizieren. Dies passiert häufig, aber das gelegentliche Erkennen von Fehlern bedeutet nicht, dass Peer Review eine zuverlässige Methode ist , um das Vorhandensein von Fehlern auszuschließen . Weit davon entfernt. Es ist nicht das richtige Werkzeug, um die Funktionsrichtigkeit der Implementierung zu überprüfen .
Die Codeüberprüfung erzwingt jedoch die Wartung des Codes . Ich werde verlangen, dass der Code sauber und verständlich ist (nicht nur für den Autor), bevor er in Produktion geht.
Das Vorhandensein von Komponententests ist völlig orthogonal dazu. Sie können eine 100% ige Codeabdeckung erzielen und alle Tests für völlig unverständlichen Code bestehen.
Die Codeüberprüfung dient auch dazu, andere Entwickler mit Ihrer Arbeit vertraut zu machen, damit sie wissen, was was ist, und in der Lage sind, von dort aus Fehlerberichte zu bearbeiten, während Sie in den Ferien sind usw. Zu wissen, was Sie sofort getan haben, kann ihnen helfen Machen Sie ihre Arbeit gut - halten Sie die Codebasis konsistent (halten Sie sich an ähnliche Muster und Konventionen in der gesamten App) oder vermeiden Sie Code-Duplikationen.
Im weiteren Sinne lernt und wächst man als Entwickler auch, indem man den Code anderer Leute liest.
Unit Tests können kaum einen Ersatz dafür sein. Ja, wenn sie gut geschrieben sind, lesen sie sich wie Dokumentation, und wir sollten uns darum bemühen. Dies schließt sich bei der Durchführung von Peer-Reviews jedoch nicht gegenseitig aus, ganz im Gegenteil - alle Vorteile von Peer-Reviews bleiben erhalten, und die Tatsache, dass Ihre Peers einige schöne Komponententests haben, macht den Überprüfungsprozess einfacher und noch vorteilhafter eher als überflüssig.
quelle
Peer review doesn't even attempt to tackle this important aspect
- nun ja , irgendwie. Bis zu einem gewissen Grad. Ich stelle oft fest, dass ich z. "Partner, Sie wiederholen hier praktisch die gleiche Logik, und das ist eine tickende Bombe. Eines Tages wird sie sich an diesem anderen Ort ändern und wir werden vergessen, sie hier zu aktualisieren ..."Ich kenne keine. Es ist auch schwierig, solche Studien durchzuführen, da Sie zwei Teams mit gleicher und realistischer Komplexität benötigen , von denen eines Code-Reviews verwendet und das andere keine. Sie müssten wahrscheinlich dasselbe Problem lösen , was bedeutet, viel Geld aus dem Fenster zu werfen. Und Sie müssten das Experiment oft genug wiederholen, um statistische Relevanz zu erhalten, was das Geld, das Sie werfen, um Größenordnungen erhöhen würde.
Wenn Sie nur die Effizienz von Unternehmen mit Hilfe von Code-Überprüfungen gegenüber Unternehmen messen, die dies nicht tun, ist nicht nur unklar, wie die Effizienz gemessen werden soll, sondern auch, woran dies tatsächlich liegt. Code Reviews sind Teil einer größeren Kultur. Welcher Teil davon das Team tatsächlich effizienter macht, ist schwer zu sagen (und hängt sehr wohl von der Art des Teams oder des Projekts ab). Oder das Vorhandensein dieser Kultur kann einfach bedeuten, dass das Unternehmen entweder kleiner oder jünger ist, was jeweils viele Auswirkungen hat. Oder es kann auch nur sein, dass die Bereitschaft, sich Code Reviews zu unterziehen, eine gesunde Distanz zu Ihrem Ego ausschließt oder fördert;)
Aber vergessen Sie nicht: Sie haben Ihre eigene Erfahrung, aus der Sie schöpfen können. Es ist ein Teil dessen, warum sie dich eingestellt haben. Wenn Sie also wirklich der Meinung sind, dass Sie die Effizienz steigern können (und Ihr Team leidet tatsächlich darunter), dann kommunizieren Sie dies klar.
Nee. Wenn Sie an die Wichtigkeit von Tests glauben, sollten Ihre Tests als erstes überprüft werden. Was ist, wenn sie Unsinn sind? Oder wenn die Berichterstattung mies ist? Oder testen sie eher die Implementierung als das Verhalten?
quelle
return true;
.Entnommen aus zufälligen Folien, die ich gefunden habe , aber die harten Daten stammen aus Steve McConnells Code Complete-Buch:
Diese 60% -Zahl stammt aus dem IEEE-Papier von Shull et al. (2002). Was wir über das Bekämpfen von Defekten gelernt haben , enthält den Abschnitt mit dem Titel:
quelle
Haftungsausschluss: Diese Antwort ist meine persönliche Erfahrung :)
Ich habe sehr schlechte Erfahrungen mit Codeüberprüfungen in Code gemacht, die wir beibehalten. Weil wir normalerweise nur einen Liner oder so haben und es nicht viel zu überprüfen gibt.
Aber in konkreten Projekten habe ich gute Erfahrungen gemacht. In meiner Prüfungszeit hat mein Trainer meinen Code regelmäßig überprüft und es hat mir sehr geholfen, einige Fehler zu finden, die ich sehr oft gemacht habe und die ich nicht mehr mache.
Also würde ich sagen, es hängt stark davon ab, was du tust, wie viele Leute du bist usw.
Auch das Risiko, dass Ihre Codereviews in einem Krieg enden, ist nicht zu unterschätzen.
quelle
Sie können Ihren Teamleiter und / oder Kollegen bitten, Ihren Code einer Peer-Review zu unterziehen, auch wenn Code-Reviews normalerweise nicht durchgeführt werden, möglicherweise im Rahmen Ihrer Schulung.
Stellen Sie sicher, dass Ihr Code gut geschrieben und getestet ist, bevor Sie ihn überprüfen.
Als Teamleiter habe ich selbst Codeüberprüfungen von neuen Mitarbeitern durchgeführt, bis ich (nach einer Weile) keine Bugs oder sonstigen kritischen Punkte im Code mehr fand und an welchem Punkt ich keine Codeüberprüfungen mehr mit ihnen durchführte. das würde passieren, wenn:
Code Reviews haben mehrere Zwecke:
Ich denke, es ist in Ordnung, Codeprüfungen für neue Mitarbeiter durchzuführen, auch wenn das Team die Codeprüfungen unter den erfahrenen Teammitgliedern überspringt.
quelle
Es gibt keine Faustregel für Codeüberprüfungen, die für jede entwickelte Software durchgeführt werden müssen. Dies hängt vom Umfang der Anwendung, der Kundengröße und der Unternehmensgröße ab. Wenn Sie beispielsweise eine Anwendung erstellen, bei der es sich um eine einfache Anwendung handelt, bei der möglicherweise in Zukunft keine weiteren Versionen implementiert werden, ist dort ein Komponententest ausreichend. Die Codeüberprüfung kommt jedoch wieder zum Tragen, wenn Sie über die Leistung der Anwendung sprechen und den Code auf etwaige Mängel des Codes überprüfen müssen, die besser hätten durchgeführt werden können, um eine schnellere Leistung zu ermöglichen.
Codeüberprüfungen werden normalerweise durchgeführt, wenn sich ein Team aus mehr als 2 Entwicklern und ein technischer Leiter zusammensetzt, der die Qualität der Anwendung sicherstellen und sicherstellen möchte, dass die Codestandards eingehalten werden, um die Anwendung für zukünftige Verbesserungen zu skalieren und für andere zu aktualisieren kommende Versionen.
Zum Beispiel gibt es mittlerweile viele CMS-Open-Source-Plattformen, und diese Plattformen führen von Zeit zu Zeit Upgrades durch, um die Plattformfunktionen zu verbessern. Stellen Sie sich vor, ein Entwickler verwendet eine dieser Plattformen und befolgt nicht die Codestandards wie Hardcodierung in Kerndateien und Schreiben von Anwendungen Code in Vorlagendateien. Wenn dieser Code in die Produktion geht und der Client die Plattform später auf eine neue Version aktualisieren möchte, wird er niemals aktualisiert, es sei denn, die Codierung wird gemäß den Codestandards für diese Plattform überarbeitet. Hier wird es zu einem ernsten Problem, den Code für die Produktion freizugeben, ohne dass eine Codeüberprüfung durchgeführt wird.
Daher würde ich sagen, dass es für professionelle Softwareunternehmen ein Muss ist, Code-Reviews vor der Veröffentlichung durchführen zu lassen, und die Ausnahmen können nur für persönliche / sehr kleine Anwendungen gelten, bei denen der Entwickler ein sehr erfahrener Programmierer ist und Erfahrung mit ihm hat.
quelle
Code-Überprüfungen haben Vorteile, die sich nicht aus dem eigentlichen Überprüfungsprozess ergeben: Es gibt immer ein Dilemma, Code zu erhalten, der von hoher Qualität ist, aber in kurzer Zeit erstellt wird. Ohne Codeüberprüfungen sind Sie auf sich allein gestellt, sodass Sie möglicherweise die Qualität für die Ausführung des Codes in kurzer Zeit opfern. Bei Code-Überprüfungen gibt es einen Prüfer, der Sie nicht mit geringer Codequalität davonkommen lässt - genau das, was Sie wollen, und der gezwungen ist, die Zeit zu verbringen, um Qualitätscode zu erhalten, der genau das ist, was Sie zuerst wollten und welcher Sie wissen, dass Sie Zeit sparen werden, da jede Stunde, die Sie für das Schreiben von besserem Code aufwenden, zwei Stunden für das Debuggen (oder mehr) einspart.
Ohne Codeüberprüfungen sind Sie auf sich allein gestellt. Es liegt also an Ihnen, eine hohe Codequalität beizubehalten. Eine einfache Lösung besteht darin, jede Änderung, die Sie selbst vornehmen, zu überprüfen und Dinge zu beheben, die nicht Ihren Qualitätsstandards entsprechen.
Dies vermeidet auch schreckliche Situationen, in denen Codeüberprüfungen zu Zusammenstößen von Ego führen - die Situation, in der Programmierer A Methode X verwenden würde, während B Methode Y verwenden würde. Wenn also A den Code schreibt, den er Methode X verwendet, besteht der Überprüfer B auf Methode Y, Also schreibt A den Code mit der Methode Y um, während B den Code geschrieben und A ihn überprüft hätte, wäre genau das Gegenteil eingetreten.
quelle
Wenn Sie Verfechter von Code-Reviews sind, gibt es leider keinen wirklichen Ersatz. Der unglückliche und stereotype Fall ist ein Arbeitsplatz, an dem keine Codeüberprüfungen durchgeführt werden, weil (A) sie mit der Praxis nicht vertraut sind und / oder (B) sie nicht die Zeit und Mühe aufwenden möchten, um eine Codeüberprüfung durchzuführen System vorhanden.
Grundsätzlich ist ein Kulturwandel am Arbeitsplatz erforderlich, um das zu erreichen, was Sie möchten - und das ist niemals einfach oder unkompliziert. Vergessen Sie nicht, dass selbst wenn Ihr Arbeitsplatz zu 100% davon überzeugt ist, dass die Codeüberprüfungen hervorragend sind und sie übernommen werden sollen, die Umstellung auf die neue Arbeitsweise immer noch einen erheblichen Aufwand an Zeit, Energie und Produktivität erfordert. Diese Investition sollte sich amortisieren - aber Sie müssen sich für die Investition und nicht nur für die Auszahlung einkaufen. Sehen Sie Roy Osheroves Video "Unit Testing und TDD - Wie es passieren kann" Die Herausforderungen bei der Einführung von Code Reviews sind denen bei der Einführung von Unit Testing sehr ähnlich.
In der Zwischenzeit tun Sie, was Sie können, um so viel wie möglich zu bekommen:
Ein Hauptvorteil von all diesen ist, dass Entwickler in Ihrer Umgebung die Codeüberprüfungen bemerken, wenn Sie sie im Laufe der Zeit warten können. Sie werden effektiv demonstrieren, wie Codeüberprüfungen in die vorhandene Kultur integriert werden können - und dies eröffnet den Weg für eine beginnende Veränderung der Kultur. Code-Überprüfungen helfen dabei . Wenn Sie dies also im Kleinen demonstrieren können, können andere - und die Kultur insgesamt - Ihrem Beispiel folgen.
quelle
Machen Sie sich keine Sorgen mehr - Ihr neuer Arbeitgeber kümmert sich einfach nicht um Codeüberprüfungen. Lernen Sie, Vertrauen in Ihre eigenen Fähigkeiten zu haben, ohne dass Ihnen jemand sagt, dass es in Ordnung ist, den von Ihnen geschriebenen Code einzuchecken. Sie werden bald lernen, ohne den nervenaufreibenden, mühsamen Prozess zu leben, bei dem der Code anderer überprüft wird.
Befolgen Sie die Stilrichtlinien (oder nur den Stil), den alle anderen verwenden. Verwenden Sie Ihre Erfahrung, um zu entscheiden, was kommentiert werden muss, welche Benennungskonventionen verwendet werden sollen und so weiter.
Testen Sie dann alles, bevor Sie es einchecken. Das Wichtigste ist, dass es richtig funktioniert.
quelle
Wenn Ihr neuer Arbeitgeber die Idee der Codeüberprüfung nicht mag, liegt dies möglicherweise daran, dass sie in negativer Weise mit den altmodischen Methoden für die Steuerung und Kontrolle in Verbindung stehen und auf eine modernere, agilere Vorgehensweise abzielen. In diesem Fall sind sie möglicherweise offener für die Idee der Paarbildung, die viele der gleichen Vorteile bietet und allgemein als eine dynamischere, modernere Praxis angesehen wird.
quelle