it-swarm.com.de

Wie gehe ich mit Codeüberprüfungen an meinem neuen Ort um, wenn ich aus dieser Praxis komme?

Das Team in meiner neuen Firma hat keinen Codeüberprüfungsprozess.

Ich komme aus Unternehmen, deren Code-Überprüfung ein Muss ist, und daher fühle ich mich nicht wohl, wenn ich meinen Code festschreibe, ohne ihn von jemandem überprüfen zu lassen.

Ich bin fest davon überzeugt, dass Codeüberprüfung eine Möglichkeit ist, die Qualität zu verbessern und Zeit zu sparen, da potenzielle Probleme früher erkannt werden (beachten Sie, dass ich jedoch nicht über Paarprogrammierung spreche).

  • Wie kann ich zeigen, dass Codeüberprüfung keine Zeitverschwendung, sondern Zeitersparnis ist?
  • Kann die Codeüberprüfung übersprungen werden, wenn Sie Unit-Tests haben?
33
jparkcool

Kann die Codeüberprüfung übersprungen werden, wenn Sie Unit-Tests haben?

Aber warum?

Die Hauptaufgabe von Peer Review besteht nicht darin, Fehler aufzuspüren.

Ja, Sie können einige potenzielle Fehler und zweifelhaften, fehleranfälligen Code identifizieren. Dies kommt häufig vor. Das gelegentliche Erkennen von Fehlern bedeutet jedoch nicht, dass Peer Review ein zuverlässiger Weg ist, um auszuschließen das Vorhandensein von Fehlern. Weit davon entfernt. Es ist nicht das richtige Werkzeug, um die Funktionskorrektheit der Implementierung zu überprüfen.

Die Codeüberprüfung erzwingt jedoch die Wartbarkeit des Codes . Ich werde verlangen, dass der Code sauber und verständlich ist (nicht nur für seinen Autor), bevor er in Produktion geht.

Das Vorhandensein von Komponententests ist vollständig orthogonal dazu. Sie können eine 100% ige Codeabdeckung haben und alle Tests auf 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 von dort abholen oder Fehlerberichte bearbeiten können, während Sie im Urlaub sind usw. Wenn Sie sofort wissen, was Sie getan haben, kann dies 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 Codeduplikationen.

Im weiteren Sinne lernt und wächst man als Entwickler auch durch das Lesen des Codes anderer Leute.

Unit-Tests können kaum einen Ersatz dafür darstellen. Ja, wenn sie gut geschrieben sind, lesen sie sich wie Dokumentation, und wir sollten uns darum bemühen. Aber auch dies schließt sich bei der Durchführung von Peer Review nicht gegenseitig aus, ganz im Gegenteil - alle Vorteile von Peer Review gelten weiterhin. Die Tatsache, dass Ihre Peers einige Nice-Unit-Tests durchführen müssen, macht den Überprüfungsprozess nur einfacher und noch vorteilhafter eher als überflüssig.

30
Konrad Morawski

Gibt es Studien und Statistiken, die zeigen, dass Codeüberprüfung keine Zeitverschwendung, sondern Zeitersparnis ist?

Ich kenne keine. Es ist auch schwierig, solche Studien durchzuführen, da Sie zwei Teams benötigen, die eine Aufgabe von gleich und realistisch Komplexität haben, wobei eines Codeüberprüfungen verwendet und das andere nicht. Sie müssten sie wahrscheinlich lösen lassen das gleiche Problem, 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 wir werfen, um Größenordnungen erhöhen würde.

Wenn Sie nur die Effizienz von Unternehmen mithilfe von Codeüberprüfungen an Unternehmen messen, die dies nicht tun, ist nicht nur unklar, wie die Effizienz gemessen werden soll, sondern auch, was die eigentliche Ursache ist. Codeüberprüfungen sind Teil einer größeren Kultur. Welcher Teil davon das Team tatsächlich effizienter macht, ist schwer zu sagen (und kann sehr wohl von der Art des Teams oder des Projekts abhängen). 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 durchaus 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 davon, warum sie dich eingestellt haben. Wenn Sie also wirklich glauben, dass Sie die Effizienz steigern können (und Ihr Team tatsächlich darunter leidet), kommunizieren Sie dies klar und deutlich.

Kann die Codeüberprüfung übersprungen werden, wenn Sie Unit-Tests haben?

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 schlecht ist? Oder wenn sie eher die Implementierung als das Verhalten testen?

24
back2dos

Entnommen aus einige zufällige Folien, die ich gefunden habe , aber die harten Daten stammen aus Steve McConnells Code Complete-Buch:

Sind Codeüberprüfungen nützlich?

"Ich glaube, dass Peer-Code-Überprüfungen das Größte sind, was Sie tun können, um Ihren Code zu verbessern."

Jeff Atwood von Coding Horror unter http://www.codinghorror.com/blog/2006/01/code-reviews-just-do-it.html


"Bei Einzelinspektionen werden in der Regel etwa 60 Prozent der Fehler festgestellt, was höher ist als bei anderen Techniken mit Ausnahme von Prototyping und Betatests mit hohem Volumen."

Steve McConnell, Code Complete 2nd Edition, Seite 485

Diese 60% -Zahl stammt aus dem IEEE-Artikel von Shull et al. 2002 Was wir über die Bekämpfung von Defekten gelernt haben , der den Abschnitt mit dem Titel enthält:

"Peer Reviews fangen 60% der Mängel auf"

5
icc97

Haftungsausschluss: Diese Antwort ist meine persönliche Erfahrung :)

Ich habe sehr schlechte Erfahrungen mit Codeüberprüfungen in Code gemacht, den wir pflegen. Weil wir normalerweise nur einen Liner haben und es nicht viel zu überprüfen gibt.

Aber in tatsächlichen Projekten habe ich gute Erfahrungen gemacht, während 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.

Ich würde sagen, es hängt stark davon ab, was Sie tun, wie viele Menschen Sie sind usw.

Auch das Risiko, dass Ihre Codereviews in einem Krieg enden, ist nicht zu unterschätzen.

3
Knerd

Sie können Ihren Teamleiter und/oder Kollegen bitten, Ihren Code einer Peer-Review zu unterziehen, auch wenn Code-Reviews nicht normal durchgeführt werden, möglicherweise als Teil Ihres Trainings.

Stellen Sie vor der Überprüfung sicher, dass Ihr Code gut geschrieben und getestet ist.

Als ich ein Teamleiter war, habe ich selbst Codeüberprüfungen von neuen Mitarbeitern durchgeführt, bis ich (nach einer Weile) keine Fehler oder andere Kritikpunkte mehr in ihrem Code gefunden habe und an welchem ​​Punkt ich keine Codeüberprüfungen mehr mit ihnen durchgeführt habe. das würde passieren, wenn:

  • Sie lernten die Systeme, mit denen sie verbunden waren, und brauchten meine Erklärungen nicht
  • Sie lernten, ihren Code zu entwerfen und/oder zu testen, bis er fehlerfrei war, bevor ich ihn sah
  • Sie haben genug über meine Richtlinien für den Codierungsstil gelernt, sodass ich ihren Code für wartbar halte

Codeüberprüfungen haben mehrere Zwecke:

  • Fehler im Code finden
  • Wissenstransfer zwischen Teammitgliedern

Ich denke, es ist in Ordnung, Codeüberprüfungen neuer Mitarbeiter durchzuführen, selbst wenn das Team Codeüberprüfungen unter den erfahrenen Teammitgliedern überspringt.

3
ChrisW

Es gibt keine Faustregel für Codeüberprüfungen, die mit einer entwickelten Software durchgeführt werden können. Dies hängt alles vom Anwendungsbereich, der Clientgröß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, sind dort Unit-Tests ausreichend. Die Codeüberprüfung wird jedoch erneut durchgeführt, wenn Sie über die Leistung der Anwendung sprechen, bei der Sie den Code auf eventuelle 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 es ein Team von mehr als 2 Entwicklern und einen technischen Leiter gibt, bei dem der technische Leiter 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 verschiedene zu aktualisieren kommende Versionen.

Zum Beispiel haben wir jetzt viele CMS-Open-Source-Plattformen, und diese Plattformen veröffentlichen von Zeit zu Zeit Upgrades, um die Plattformfunktionen zu verbessern. Stellen Sie sich einen Entwickler vor, der eine dieser Plattformen verwendet, und befolgen Sie nicht die Codestandards wie Hardcodierung in Kerndateien, Schreiben von Anwendungen Code in Vorlagendateien, und wenn dieser Code in die Produktion geht und später, wenn der Client die Plattform auf eine neue Version aktualisieren möchte, wird er niemals aktualisiert, es sei denn, die Codierung wird gemäß den Codestandards für diese Plattform wiederholt. 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 Codeüberprüfungen vor der Veröffentlichung ein Muss für professionelle Softwareunternehmen sind und die Ausnahmen nur für persönliche/sehr kleine Anwendungen gelten können, bei denen der Entwickler ein sehr erfahrener Programmierer ist und Erfahrung mit ihm hat.

2
Venkat

Codeüberprüfungen haben Vorteile, die nicht aus dem Überprüfungsprozess selbst resultieren: 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 Codeerstellung in kurzer Zeit opfern. Bei Codeüberprüfungen gibt es diesen Prüfer, der Sie nicht mit geringer Codequalität davonkommen lässt - genau das, was Sie wollen. Er muss sich die Zeit nehmen, um Qualitätscode zu erhalten, der genau das ist, was Sie überhaupt wollten und der Sie wissen, dass dies am Ende Zeit spart, da jede Stunde, die für das Schreiben von besserem Code aufgewendet wird, zwei Stunden beim Debuggen (oder mehr) gespart wird.

Ohne Codeüberprüfungen sind Sie auf sich allein gestellt. Es liegt also an Ihnen, eine hohe Codequalität aufrechtzuerhalten. Eine einfache Lösung besteht darin, jede Änderung, die Sie selbst vornehmen, zu überprüfen und Probleme zu beheben, die nicht Ihren Qualitätsstandards entsprechen.

Dies vermeidet auch schreckliche Situationen, in denen Codeüberprüfungen zu Ego-Konflikten führen - die Situation, in der Programmierer A Methode X verwenden würde, während B Methode Y verwenden würde. Wenn A also den Code schreibt, den er Methode X verwendet, besteht der Prüfer B auf Methode Y, Also schreibt A den Code mit Methode Y neu, während, wenn B den Code geschrieben und A ihn überprüft hätte, genau das Gegenteil passiert wäre.

1
gnasher729

Wenn Sie ein Verfechter von Codeüberprüfungen 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 zu erhalten System vorhanden.

Grundsätzlich brauchen Sie einen Kulturwandel am Arbeitsplatz, um das zu erreichen, was Sie wollen - und das ist nie einfach oder leicht. Vergessen Sie nicht, dass selbst wenn Ihr Arbeitsplatz zu 100% davon überzeugt ist, dass 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 auszahlen - aber Sie müssen sich für die Investition einkaufen, nicht nur für die Auszahlung. Siehe Roy Osheroves Video "Unit Testing und TDD - How To Make It Happening" - Die Herausforderungen bei der Einführung von Code-Reviews sind denen bei der Einführung von Unit-Tests sehr ähnlich.

Tun Sie in der Zwischenzeit, was Sie können, um so viel wie möglich zu bekommen:

  • Wenn es andere Entwickler gibt, die den Wert von Codeüberprüfungen erkennen, versuchen Sie, sich gegenseitig zu überprüfen, auch informell.
  • Wenn Sie einen Mentor oder Entwickler haben, der für Ihr Training verantwortlich ist, erklären Sie ihm den Wert, den Sie in Codeüberprüfungen sehen, und fragen Sie ihn, ob er zumindest gelegentlich bereit ist, Ihren Code zu überprüfen.
  • Sagen Sie Ihrem Manager, dass Sie den Code anderer Personen überprüfen möchten, da dies Ihnen hilft, das System besser zu verstehen.
  • Wenn Sie irgendwann Teamleiter werden, können Sie Codeüberprüfungen lokal nur für Ihr Team durchführen.

Ein Hauptvorteil davon 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 . Wenn Sie dies also in kleinem Maßstab demonstrieren können, wird dies den Weg für andere öffnen - und für die Kultur als Ganzes - um Ihrem Beispiel zu folgen.

0
Standback