Als das Unternehmen, in dem ich arbeite, neue Manager anheuerte, boten sie uns an, bei jedem Meeting einen Überblick über den Code einer Person zu erhalten. Wir haben alle zwei Wochen Besprechungen, also sollte jedes Mal einer der Entwickler seinen / ihren Code auf dem Projektor zeigen, und andere wollten darüber diskutieren.
Ich fand das großartig: Jeder Entwickler würde beim Schreiben von Code vorsichtiger sein und wir könnten unsere Erfahrungen besser teilen. Aber irgendwie haben wir das vergessen und das Angebot blieb nur ein Angebot.
Was sind die Vorteile davon und gibt es irgendwelche Nachteile?
Antworten:
Code-Überprüfungen sind eine gute Praxis.
Dies ist wahrscheinlich der beste Weg, um aus Fehlern zu lernen und zu sehen, wie bestimmte Probleme von anderen gelöst werden. Dies ist auch eine der besten Möglichkeiten, um die Qualität einer Codebasis aufrechtzuerhalten.
Codeüberprüfungen finden in vielen Unternehmen statt, obwohl es schwierig zu sagen ist, dass es einen bestimmten Prozess gibt, dem sie alle folgen.
Bei einer formelleren Codeüberprüfung sitzt ein Senior (oder mehrere Senioren) zusammen mit einem Entwickler, um seinen Code zu überprüfen, Vorschläge zu unterbreiten und gleichzeitig zu unterrichten.
Zusätzliche Vorteile für Code-Überprüfungen (wie für diese Frage kommentiert) sind:
quelle
Code Reviews sind ein nützliches Tool zum Lernen , insbesondere wenn Sie ein neues Teammitglied an Bord haben. Nun, es ist auch als Peer-Review-Prozess bekannt :)
Es gibt verschiedene Arten von Codeüberprüfungen:
Es gibt nur einen Bereich,
associated disadvantage
in dem formelle Code-Überprüfungen erhebliche Investitionen in die Vorbereitung des Überprüfungsereignisses und in die Ausführungszeit erfordern .Weitere Referenzen sind unten aufgeführt (für tiefere Tauchergebnisse)
quelle
Diese bestimmte Praxis scheint ineffizient und wahrscheinlich peinlich zu sein - wer möchte, dass ihre Fehler auf eine ganze Gruppe von Menschen aufmerksam gemacht werden. Wenn sie also nicht auswählen können, was überprüft werden soll, und der Code noch nicht in der Produktion ist, wird dies wahrscheinlich dazu führen, dass sich die Leute unwohl fühlen.
Je nachdem, wann der Code überprüft wird, kann es einen großen Unterschied machen, ob die Kommentare zur Codeüberprüfung in den Code eingefügt werden oder nicht. Wenn der Entwickler nur Produktionscode auswählen und auswählen kann, ist es unwahrscheinlich, dass Überprüfungskommentare implementiert werden. Es ist schön, Meetings zu haben, in denen Entwickler eine raffinierte Technik zeigen können, an der andere interessiert sind, aber das ist keine Codeüberprüfung. Das ist Training.
Wir überprüfen jeden Code, bevor er in die Qualitätssicherung verschoben wird. Jedes Stück. In der Regel sind nur der Code-Reviewer und der Entwickler beteiligt. Es geht nicht an die Qualitätssicherung, bis der Code-Prüfer es offiziell bestanden hat. Der Entwickler muss also die Änderungen vornehmen. Wir haben viele Probleme gefunden und schnell behoben, die die Qualitätssicherung möglicherweise nicht gefunden hat (sie finden Dinge, die wir auch in der Codeüberprüfung nicht sehen). Darüber hinaus wird die Cowboy-Codierung reduziert und es werden schnell diejenigen Personen identifiziert, die keine guten Leistungen erbringen, sodass wir ihre Probleme beheben und sie trainieren oder beseitigen können, bevor sie unsere Anwendung beschädigen. Die Codeüberprüfungszeit ist Teil unserer Zeitschätzung bei der Planung der Arbeit, damit sie sich überhaupt nicht auf die Frist auswirkt. Tatsächlich spart es auf lange Sicht Zeit, denn je früher ein Problem gefunden wird, desto einfacher ist es zu beheben.
Ich persönlich habe weniger erfahrenen Entwicklern durch Codeüberprüfung viele bessere Techniken beigebracht, und ich habe selbst einige bessere Techniken erlernt, indem ich den Code anderer Leute sowie deren Kommentare zu meinem Code überprüft habe. Weitere Codeüberprüfungen stellen sicher, dass jemand anderes den Code versteht, was wesentlich zur Verbesserung der Wartbarkeit beiträgt. Manchmal funktioniert der Code, aber die Fragen der Überprüfung machen deutlich, dass es zu Wartungsproblemen kommt, da der Code schwer zu verstehen ist. Besser in solchen Fällen umgestalten, solange Sie noch nicht alles vergessen haben, als ein Jahr später, wenn selbst der Autor des Codes sich am Kopf kratzt und sich fragt, warum der Code das und das tut.
quelle
Das Problem mit dieser Art von Code-Überprüfung, ein Entwickler alle zwei Wochen, wird der Fortschritt langsam sein. Es kann Monate dauern, bis alle im Rampenlicht stehen.
Während Codeüberprüfungen gut sein können, muss es einen Grund dafür geben, und es muss einen Grund dafür geben, warum sie durchgeführt werden.
Mehrere Fragen müssten entschieden werden:
Wenn die Leute, die diesen Plan vorgeschlagen haben, noch keine Antworten auf diese Fragen haben, lesen sie möglicherweise einen Artikel darüber, wie alle großen Unternehmen Codeprüfungen durchführen. Deshalb sollten wir sie auch durchführen, ohne den Zweck dahinter zu verstehen.
quelle
Die Codeüberprüfung ist nur dann eine gute Übung, wenn die Idee zur Codeüberprüfung vom Entwicklungsteam stammt. Entwickler benötigen keine Projektoren und Präsentationen, um sich gegenseitig Code zu überprüfen. Wenn sie wollen, werden sie es vorziehen, zur Konferenz zu gehen.
Wenn die Idee der Codeüberprüfung vom Management kommt, kann dies wie eine Untersuchung einer geringen Softwarequalität klingen und das Entwicklungsteam demoralisieren. Ich denke nicht, dass das Management-Team in den Code-Überprüfungsprozess einbezogen werden sollte. Code-Überprüfung Seite an Seite mit dem Management-Team - sehr schlechte, tödliche und destruktive Praxis.
quelle
Die Codeüberprüfung ist eine hervorragende Praxis, insbesondere wenn Entwickler Wissen austauschen und die Grundregeln im Voraus festgelegt sind, dass Vorschläge und Kritik konstruktiv sein sollen und nicht, um einen einzelnen Entwickler für die Zielübung zu verwenden.
Manager, die keine Entwickler sind, werden von den Entwicklern mit Misstrauen aufgenommen, wenn sie sich für eine Codeüberprüfung entscheiden. Die meisten Manager-Typen möchten nicht auf die Details eingehen, auf die Entwickler bei der Betrachtung von Code von Natur aus eingehen. Die meisten Manager werden auch nicht verstehen, warum die Entwickler einen Ansatz über einen anderen kritisieren.
Wenn Sie die gute Arbeit der Entwickler gegenüber dem Management demonstrieren möchten, hat die "Codeüberprüfung" eine andere Bedeutung und sollte nicht so detailliert sein wie die Codeüberprüfungen, die durchgeführt werden, um die Codequalität unter den Entwicklern anzuweisen / zu verbessern. Diese Art der Präsentation kann hilfreich sein, um zu demonstrieren, was Entwickler tun, wenn die Präsentation auf höherer Ebene und weniger code-spezifisch sein kann, und sich auf das konzentrieren, was die Manager verstehen (Wert, ROI usw.). Es könnte Managern verständlich machen, dass Joe durch den Aufbau von X einen erheblichen Mehrwert für das Unternehmen geschaffen hat, der Y-Zeit spart, oder Z-Dollar pro Bestellung usw. Ich denke, es ist die Mühe wert, den Wert eines Einzelnen zu zeigen Mitglieder Ihres Teams. Denken Sie jedoch daran, dass Sie vorsichtig sein müssen, um Ihr Publikum nicht mit Fachjargon oder zu vielen Detailstufen zu überfordern.
quelle
Ich stimme voll und ganz zu, dass Code-Reviews für den Unterricht sehr konstruktiv sind. Ich möchte jedoch auf jeden Fall sicherstellen, dass die Designmuster des Teams korrekt befolgt werden.
Wir schreiben ein wenig Prototypenarbeit und überarbeiten Code-Teile, und obwohl wir uns mit dem Produkt am Ende wohl fühlen, ist die Lesbarkeit beeinträchtigt - die Leute können es nicht ansehen und sehen, wie klar es ist.
Unabhängige Augen sind immer von Vorteil, wenn man sich auf bestimmte Denkweisen einlässt und dies auf allen Erfahrungsebenen geschieht. Sie haben Stunden in das Design und den Code investiert. Daher ist es schwierig, mit Codeüberprüfungen umzugehen, wenn Sie befürchten, dass Ihre Bemühungen zunichte gemacht werden. Am Ende erhalten Sie jedoch hoffentlich eine sauberere, schlankere und besser verwaltbare Anwendung, und die Erfahrung ist in Ihnen verankert.
Für unser Team machen wir wie @ElYusubov erwähnt und verwenden ein Tool speziell für Code Review - Crucible. Die Nutzer überprüfen, kommentieren und melden den Code ab. Jede Woche setzen wir uns hin und prüfen von Angesicht zu Angesicht interessante und / oder komplexe Codeteile.
quelle
Als Praktikant im Bereich Softwareentwicklung habe ich Code-Reviews als überaus hilfreich empfunden.
In meinem Team ist für jedes Commit eine Codeüberprüfung erforderlich (große Änderungen werden formal, kleinere Änderungen werden schnell angezeigt). Ich habe definitiv das Gefühl, dass meine Konstruktions- und Designkünste dadurch gestärkt wurden, zumal ich mit größerer Wahrscheinlichkeit das Whiteboard als das Terminal sofort herausziehe, da ich weiß, dass ich beobachtet werde. :)
In der Tat denke ich, dass es viel besseren Code produziert, mit dem einzigen kleinen Nachteil, dass die Entwicklungszeit etwas langsamer ist (was sich meiner Meinung nach auf lange Sicht lohnt, wenn Sie nicht fürchterlich gestalteten Code reparieren / erweitern müssen). Ich denke auch, dass Junioren / Praktikanten im Team die Chance auf wertvolles Feedback zu schätzen wissen. Ich weiß ich tue!
quelle
Aus meiner Erfahrung heraus ist Code Review eine großartige Sache, wenn Sie sie gut ausführen. Wenn Sie professionelle / reife Teammitglieder und Manager haben. Wir als Programmierer sind "Löser". Unsere Aufgabe ist es nicht, Textzeilen zu erstellen. Deshalb müssen wir Ideen, Fehler, Probleme und Erfahrungen teilen. Code-Überprüfung ist wirklich eine gute Praxis, um dies zu erreichen.
Leider hört es sich gut an, ist aber in den meisten Unternehmen sehr schwer umzusetzen. Ihr Team braucht viel "Autonomie". Es scheint schwierig zu sein, Ihre Manager oder die Finanzabteilung davon zu überzeugen, dass es rentabel ist, keine neuen Funktionen zu erstellen.
In meiner Firma versuchen wir, eine Codeüberprüfung durchzuführen. Aber es wird zu viel Zeit damit verbracht, das Kaninchen zu jagen (Features zu machen).
quelle
Viele Stil- und grundlegende Syntaxtypprüfungen werden heutzutage mithilfe von Tools (FXCop usw.) durchgeführt.
Codereviews sind jedoch gut, insbesondere bei neuen Teammitgliedern, komplexen oder wirkungsvollen Dingen (z. B. etwas, das wichtigen Personen auffällt, wenn es ausfällt oder geschäftliche Auswirkungen hat) und insbesondere beim Outsourcing oder bei der Verwendung von kurzfristigen Auftragnehmern (insbesondere wieder) Wenn sie keine Muttersprachler sind, können Übersetzungsfehler / Sprachprobleme dazu führen, dass die Software alle Tests besteht, aber nicht das tut, was sie eigentlich tun soll.
Ich bin kein Fan davon, Code für ein Team auf einen Projektor zu setzen - viel besser für ein Code-Review-Meeting, bei dem ein anderes Teammitglied (Teamleiter usw.) eine Liste mit dem Entwickler durchläuft. Dies wirkt sich auf weniger Leute aus - es verhindert, dass viel Zeit mit Stilargumenten verschwendet wird - und ist für den Entwickler weniger peinlich. Es ist konstruktiver und einfacher für den Entwickler, echte Probleme in den Griff zu bekommen und sich nicht von "Ich hätte das getan ..." - Kommentaren blenden zu lassen.
Ich denke auch, dass nicht erzwungene Codeüberprüfungen - wie das Versenden von Code auf eine Freigabe oder das Versenden per E-Mail in der Hoffnung, dass jemand seine Mittagspause aufgibt, um sie durchzuarbeiten - Zeitverschwendung sind.
Ein Platz mit einem Haufen Listing, einem Filzstift und einer Tasse Kaffee im Kaffeebereich ist dafür ideal.
quelle
Diese Art von Gruppenausstellung und Tell wäre gut für neue Technologien oder um mehrere jr zu bekommen. Entwickler sind auf dem neuesten Stand, aber ich denke nicht, dass dies so gut ist wie eine konsequente Überprüfung des neuen Codes. Es ist effizienter, es eins zu eins machen zu müssen.
quelle
Code-Überprüfung hilft, "das Ganze" zu sehen. Separate Entwickler tendieren dazu, nur ihre Anforderungen / Probleme zu sehen. CR entdeckt Ideen und Lösungen aus der ganzen Perspektive. CR hilft hauptsächlich dabei, unnötige Arbeitsabfälle zu vermeiden. Das ganze Produkt ist billiger und in besserer Qualität.
quelle