Ich habe bei zwei Unternehmen gearbeitet, die bei der Codeüberprüfung jeweils unterschiedliche Methoden hatten:
In der ersten Firma wurde von den Teamleitern eine Codeüberprüfung durchgeführt, die nach Abschluss jedes Moduls erforderlich war.
In der zweiten Firma mussten die Teamleiter jedoch keine Codeüberprüfungen durchführen und überprüften lediglich die Funktionalität und das Design.
Also bin ich verwirrt. Wird der Codeüberprüfungsprozess wirklich benötigt? Wenn ja, warum? Und wenn nicht, warum nicht?
Antworten:
Ich persönlich denke, dass jeder Code eine Codeüberprüfung durchlaufen sollte, egal ob Sie ein Junior- oder Senior-Entwickler sind.
Warum? Für den Anfang sagt Ihr Titel nichts darüber aus, wie Sie sich entwickeln, und ein leitender Entwickler könnte etwas vom Junior lernen. In unserer Firma wechseln wir uns ab, damit eines der anderen Teammitglieder Ihren Code überprüft. Meistens sind wir ein "Junior" - und ein Senior-Team, sodass all die Dinge, die nicht täglich gesagt werden, so sein können in einem Follow-up gefangen. Wenn der Senior den Junior-Code nicht mag, sollte er sich anhören, warum der Junior das getan hat, und prüfen, ob dies eine praktikable Lösung ist, die in Zukunft verwendet werden könnte Wer du bist.
Eine wichtige Sache bei der Codeüberprüfung ist, dass man nicht zu nett ist. Wenn man ein netter Typ ist, lässt man immer mehr chaotischen Code im System entstehen. Genau wie gestern habe ich angefangen, eine vollständige Anwendung zu überarbeiten, die ein ehemaliger Junior-Entwickler geschrieben hat, und mein Gott, dieser Code hätte eine Überprüfung benötigen können, bevor er gegangen ist.
Ich verstehe nicht, warum es der Teamleader sein sollte, der nur Bewertungen durchführt, aber es erfordert eine Person, die keine Angst hat, einen "Kampf" um ein Stück schlecht entwickelten Codes zu führen, und es muss eine Person sein, die sich darum kümmert, wie der Code sein soll Sein. Nicht alle Unternehmen stellen Leute ein, denen es wirklich wichtig ist, was sie tun, und diese schlechten Eier sollten IMO keine Codeüberprüfungen erlauben, da sie wahrscheinlich nur mit den Schultern zucken und zu schlechtem Code "OK" sagen.
quelle
Grundsätzlich ist eine Codeüberprüfung für alle Programmierer erforderlich, unabhängig von ihrer Erfahrung. Es ist die Qualitätskontrolle der Softwareentwicklung und einer der Gründe, warum Open Source von sehr hoher Qualität sein kann.
EDIT: Der Grund ist, dass ein Code-Reviewer heute genau die gleiche Rolle spielt wie ein späterer Betreuer. Wenn der Code heute für ihn keinen Sinn ergibt, ergibt er auch später keinen Sinn, wodurch die Behebung von Fehlern teurer wird. Mache es daher heute verständlich, während sich der Entwickler noch an den Code erinnert. Außerdem kann der Prüfer Fehler oder Auslassungen erkennen, die der Entwickler übersehen hat.
Leider wollen es nur sehr wenige, aber aus geschäftlicher Sicht sollte es obligatorisch sein.
quelle
Ich arbeite an einem Ort, an dem die Codeüberprüfung jetzt eine Voraussetzung ist, aber noch nicht einmal 3 Jahre alt ist. Es hat eine enorme Verbesserung in unserem Code und in der Fähigkeit anderer bewirkt, den Code später zu pflegen. Selbst ältere, sehr erfahrene Entwickler machen Fehler, die einfach und leise in der Codeüberprüfung behoben werden können, bevor QA sie findet, oder noch schlimmer, bevor der Kunde sie findet. Darüber hinaus ist mindestens eine andere Person als der Originalentwickler mit dem Code vertraut.
Wenn eine Organisation etwas Neues ausprobiert, wie wir es bei der Codeüberprüfung getan haben, besteht häufig Widerstand gegen Änderungen. Ich habe so gut wie nichts davon gesehen (wir waren sehr bemüht, auch eine formelle QA-Abteilung zu bekommen.) Mit Codeüberprüfung. Es sind nur ein oder zwei Überprüfungen erforderlich, um den Wert zu ermitteln.
Ich habe neue Techniken gefunden, die ich nicht in Betracht gezogen hatte, um eine Codeüberprüfung der Arbeit eines anderen durchzuführen oder um meinen Code überprüfen zu lassen. Wir haben Kompetenzprobleme bei Neueinstellungen relativ schnell festgestellt, indem wir Codeüberprüfungen durchgeführt haben und vor allem, wie sie auf die Codeüberprüfung reagiert haben. Wir haben gelernt, welche Dinge im Moment vollkommen klar erscheinen, während wir diesen Abschnitt programmieren, der bei der Wartung nicht klar sein wird. Das ist von unschätzbarem Wert. Es kann sein, dass das einzige, was benötigt wird, ein Kommentar ist, warum etwas getan wurde. Wir haben einige grundlegende Missverständnisse bezüglich unseres Datenbankdesigns festgestellt, die korrigiert werden mussten, damit ein Bericht tatsächlich die richtigen Informationen enthält.
In einer Codeüberprüfung habe ich oft gesehen, dass der Entwickler durch die bloße Erklärung von etwas zu jemand anderem eine Glühbirne im Kopf hat und feststellt, dass es einen Fehler gibt, den der Überprüfer nicht gesehen hat.
Und der Junge kann die Cowboy-Programmierer identifizieren, die sich nicht an Standards halten oder vorgeschriebene Tools verwenden und deren Code für niemanden unerreichbar sein wird. Und es kann sie zwingen, mit dem Programm zu kommen oder auch rauszukommen.
Die Personen, die sich der Codeüberprüfung am meisten widersetzen, sind häufig die Personen, die die Organisation am dringendsten loswerden muss, weil sie in ihrem Herzen wissen, dass ihr Code eine Codeüberprüfung nicht bestehen kann.
quelle
Agiler Typ würde sagen: "Du brauchst keine Codeüberprüfung, mache einfach Paarprogrammierung und schreibe gute Tests" :)
quelle
Die Codeüberprüfung ist eine gute Methode, um Wissen und bewährte Verfahren in einem Team zu verbreiten. Nach meiner Erfahrung ist es eine gute Idee, sicherzustellen, dass der gesamte Code überprüft wird, und zu variieren, wer welchen Code überprüft.
In meinem derzeitigen Team wird der Code aller gleichermaßen überprüft, und sowohl der Programmierer als auch der Prüfer müssen mit dem Code zufrieden sein, bevor er veröffentlicht werden kann. Dies gilt ebenso für Senior-Entwickler, die von mehr Junior-Entwicklern, einem Junior-Entwickler, der einen anderen überprüft, oder anderen Senior-Entwicklern, die sich gegenseitig überprüfen, überprüft werden. Wenn der Prüfer unerfahren ist oder sich nicht wohl fühlt, einen bestimmten Code zu prüfen, wird er sich mit einem anderen Entwickler (und möglicherweise auch dem ursprünglichen Entwickler) zusammenschließen, um die Prüfung als Gruppe durchzuführen.
quelle
Ich bin seit mehr als 20 Jahren im Geschäft und arbeite für Softwareunternehmen und für verschiedene Unternehmen. Keiner dieser Orte hatte einen Code-Überprüfungsprozess. Ich kann jedoch die Vorteile eines solchen Systems verstehen und schätzen. Nach meinem Verständnis sollten sie im Wesentlichen verwendet werden, um die Einhaltung von Standards zu gewährleisten, die befolgt werden sollten, damit andere den Code in Zukunft einfacher warten können. Die Lesbarkeit des Codes kann auch in einem Überprüfungsprozess überprüft werden, um sicherzustellen, dass die Wartung effektiv mit dem Code arbeiten kann.
Derzeit arbeite ich in einem kleinen Laden, in dem ich der einzige Entwickler bin. Gelegentlich haben wir Auftragnehmer hinzugezogen, um den Rückstand zu beheben. Mindestens ein oder zwei dieser Auftragnehmer haben Code geschrieben, der nicht unbedingt meinen oder den Standards der Unternehmen entsprach, aber er funktionierte gut und war zumindest einigermaßen verständlich. Als ich das Management auf dieses Problem aufmerksam machte, war es ihnen egal, sie wollten nur wissen, ob es das tat, wofür wir sie bezahlten. Ich denke also, es hängt nur vom Unternehmen ab, und ob sauberer, einfach zu pflegender Code das gewünschte Produkt ist oder ob sie nur etwas wollen, das für das Geld gut funktioniert.
Natürlich würde ich als Entwickler und einer, der Code warten muss, gerne mit sauberem Code arbeiten, der einem bestimmten Standard folgt, aber ich habe nicht immer diesen Luxus, also mache ich das Beste daraus und beschäftige mich mit dem, was ich habe , auch wenn es manchmal bedeutet, Code in meinem eigenen Standard neu schreiben zu müssen.
quelle
Durch Codeüberprüfungen können Fehler früher im Software-Lebenszyklus identifiziert werden, wenn die Behebung von Problemen einfacher (und kostengünstiger) ist. Bei SmartBear haben wir ein Peer-Code-Überprüfungstool entwickelt und viel darüber nachgedacht , wie Codeüberprüfungen wirksam werden können. Basierend auf den Daten unserer Kunden sind Mängel, die in der Codeüberprüfung festgestellt wurden, 8-12-mal billiger zu finden und zu beheben als Mängel, die in der Qualitätssicherung festgestellt wurden. Allein die Kostenersparnis lohnt die Codeüberprüfung, aber es gibt mehr Wert als nur das. Die Codeüberprüfung ist eine hervorragende Möglichkeit für alle im Team, sich als Softwareentwickler weiterzubilden und zu verbessern.
Es gibt einige Fallen, die dazu führen können, dass Codeüberprüfungen weniger effektiv sind, und es scheint, als wäre Ihre Organisation in einer davon gefangen. Überprüfen Sie den Code, nicht die Personen. Titel bedeuten in einer Codeüberprüfung nichts. Appelle an die Behörde (Sie müssen es auf meine Weise tun, weil ich der Teamleiter bin) schaden mehr als nützen. Lehren Sie stattdessen. Erfahrene Ingenieure sollten erklären, warum das so ist, und nicht nur verlangen, dass es so ist. Wenn Sie Schwierigkeiten haben, ein Konzept zu erklären, ist es auch für Sie eine Lernerfahrung. Sie beide werden bessere Entwickler für die Anstrengungen sein, die Sie unternommen haben.
quelle
Ich denke, Code, der ALLEN CODE überprüft, ist übertrieben. Die Zeit, die benötigt wird, um den gesamten Code zu überprüfen, könnte besser an anderer Stelle verwendet werden. Ich denke, dass kritischer Code und / oder besonders komplexe Teile einer Codeüberprüfung bedürfen, aber sicherlich nicht jede Codezeile.
quelle
Meiner Meinung nach sollte Code, der von einem Unternehmen verwendet wird, unabhängig davon, ob er von einem Junior- oder Senior-Entwickler geschrieben wurde, immer überprüft werden. Warum? Denn was wäre, wenn der Code mehrere Fehler hätte? Und wenn das Programm während der Verwendung dieses Codes abstürzte? Um dies zu verhindern, sollte der gesamte Code vor der Verwendung überprüft werden.
Aber was ist mit den Unternehmen, die keinen Code überprüfen? Es sind wahrscheinlich die Unternehmen, die viele technische Probleme haben und viele, wie sie den Verbrauchern sagen, "Abstürze" ;-).
Lassen Sie mich all Ihre Fragen beantworten:
quelle
Code Review : Der Code Review Prozess sein , muss lebenswichtig einer für alle, werde ich erklären , wer sind alle get Vorteile aufgrund der Leitung von Code - Review und was sind die Vorteile , die sie bekommen.
1. Vorteile, die das Unternehmen durch die Durchführung von Code-Überprüfungen erzielt: Wenn häufige Code-Überprüfungen durchgeführt werden, kann das Unternehmen die Endprodukte viel besser optimieren, um Markennamen in seinem Markt zu etablieren und dem Unternehmen dabei zu helfen, diese zu überprüfen erhalten oder verbessern ihre aktuelle CMMI- Ebene.
2. Vorteile für den Teamleiter durch die Durchführung der Codeüberprüfung: Wie wir alle wissen, kann ein Lehrer die Fehler leicht identifizieren, da er die Antworten seiner Schüler häufiger überprüft, um eine Vorstellung davon zu bekommen, in welchen Bereichen sie sich möglicherweise befinden für falsche Dinge möglich sein. in ähnlicher weise weiß der teamleiter auch, was in diesen bereichen falsch läuft. Wie können wir diese korrigieren? Und dem Teamleiter helfen, die neuen Ideen auch vom Junior-Entwickler zu übernehmen.
3. Vorteile für den Junior-Entwickler durch die Durchführung der Codeüberprüfung: Junior-Entwickler können leicht die Ideen zum Codeüberprüfungsprozess aufgreifen und auch den Codierungsstandard abrufen. Zum Beispiel: API auf ordnungsgemäße Weise erstellen. Sie erlernen die Standardisierung der Kodierung, die ihnen in Zukunft helfen kann, insbesondere wenn sie in eine höhere Position versetzt werden.
Meine Schlussfolgerung ist also, dass die Codeüberprüfung ein sehr, sehr wichtiger Prozess für alle ist (auch für Teammitglieder), da die Codeüberprüfung uns dabei hilft, unachtsame Fehler in unserem Code zu korrigieren, da wir alle Menschen sind und daher nicht vorhersagen können, dass wir dies niemals tun Machen Sie nachlässige Fehler im Code.
quelle
Was ist der Unterschied, wenn Sie Ihre Ideen stören, bevor Sie Ihren Code einchecken (überprüfen) oder später aufgrund eines Fehlers, wenn Sie zu schlau / schwer zu verstehen sind oder wenn Sie nicht den anerkannten Standardpraktiken folgen? Ist es dein Ego?
Sie können die Vorzüge der Codeüberprüfung oder etwas anderes nicht außer Acht lassen, nur weil sie von einem weniger qualifizierten Teammitglied, das Sie nicht respektieren, schlecht implementiert wird. Code Review ist kein hochkomplexer Prozess, den nur wenige Superprogrammierer verstehen können. Ich bin mir nicht sicher, ob es viele Programmierer oder professionelle Autoren gibt, die in der Lage sind oder die Zeit haben, sich selbst zu bearbeiten.
Haben Sie sich ein paar Monate später schon einmal gefragt, was ich gedacht habe? Es gibt eine bessere Chance, es mit einer Codeüberprüfung zu erwischen. Sie haben es einfach verstanden und sind nur wenig besser als der Programmierer, der Sie vor einer Weile waren - ich hoffe.
quelle
IMO sollte eine Codeüberprüfung für alle Entwickler unerlässlich sein, aber nur, wenn die Personen, die die Überprüfung durchführen, selbst kompetent sind. In der Vergangenheit hatte ich Code in einer Überprüfung abgelehnt, weil ich
SOLID
, wie Sie es nicht taten, eine Abhängigkeitsinjektion durchgeführt und den Code entsprechend dem logischen Design in Namespaces und Ordner organisiert und eine kleine Reihe von Komponententests eingeschlossen hatte Überprüfen Sie den Code. Der Code wurde als "zu kompliziert" abgelehnt und mir wurde gesagt, dass ich eine Klasse verwenden soll, die alles zusammenfasst und die Tests entfernt, da das Unternehmen den Code nicht geschrieben hat.Eine solche Codeüberprüfung ist wertlos, aber eine Codeüberprüfung mit einem kompetenten Team kann häufig Aufschluss über das Design geben (z. B. warum Sie X und Y, aber nicht Z ausführen sollten) oder auf einen tatsächlichen Fehler hinweisen (z. B. wenn Sie X ausführen, schlägt Y fehl aus falschen Gründen).
quelle
Natürlich ist keine Codeüberprüfung erforderlich . Andererseits gibt es auch keine Tests, kontinuierliche Integration, Quellcodeverwaltung, Kundenbeteiligung, Profilerstellung, statische Analyse, anständige Hardware, Builds mit einem Klick, Fehlerverfolgung, die Liste geht weiter.
Zusammen mit Code Reviews sind die oben genannten Dinge Tools, die zur Sicherung der Softwarequalität beitragen. Mit einer Kombination aus Können, Glück, Zeit und Entschlossenheit; Sie können hochwertige Software ohne dieses Zeug liefern, aber es ist wahrscheinlich , dass Sie werden nicht .
In Ihrem Szenario gibt es nichts zu verwechseln. Nicht jede Organisation gibt sich mit jeder Best Practice zufrieden. Sie stimmen dem möglicherweise nicht zu, es kann im Widerspruch zu einer anderen bewährten Methode stehen, die sie implementieren, oder sie sind der Ansicht, dass der Aufwand für die Implementierung zu diesem Zeitpunkt zu groß für sie ist. Abhängig von ihren Umständen können sie damit richtig liegen oder eine falsche Wirtschaft machen. Bei einigen Tools (z. B. Quellcodeverwaltung) ist das Verhältnis von Amortisation zu Aufwand so gut, dass die Verwendung ein Kinderspiel ist. für andere ist es weniger klar.
Es besteht kein Zweifel, dass die Codeüberprüfung eine Praxis ist, die einen erheblichen Overhead mit sich bringt. Aus diesem Grund versuchen Unternehmen, diesen Aufwand zu minimieren, indem sie dies entweder gar nicht oder nur in bestimmten Situationen tun (z. B. für ein Junior-Teammitglied oder eine besonders haarige Veränderung). Es ist nicht immer offensichtlich, dass es sich mehr auszahlt (wenn es darum geht, Fehler zu beheben, technische Schulden zu reduzieren oder Wissen zu teilen), als es kostet. Der größte Teil dieser Amortisation ist schwer zu quantifizieren, wohingegen es sehr einfach ist, die Anzahl der von Ihrem Unternehmen für Überprüfungen aufgewendeten Arbeitsstunden zu ermitteln. Das am einfachsten zu quantifizierende Bit (verringerte Fehleranzahl) lässt sich leicht auf andere Faktoren zurückführen (z. B. "Natürlich hat es weniger Fehler, es ist ausgereifter").
quelle
Wir machen Online-Fußballspiel in der Türkei. Viele Benutzer und Spielleiter helfen uns bei der Funktionalität. Außerdem geben sie Kommentare zu den benötigten Funktionen. Ich denke, wenn Sie viele Benutzer haben, können Funktionstests durchgeführt werden, um zu helfen oder Ausweise zu erhalten. Die Zusammenarbeit von Entwicklern, Spielleitern und Benutzern mit Foren, Support-Teams und privaten Testumgebungen schafft ein soziales Projekt.
Sicher, Code-Reviews und Erfahrungsaustausch zwischen Entwicklerteams sind erforderlich, aber wenn es nicht kritisch ist, müssen Sie sich nicht zwingen.
quelle
Ich denke, wie ausführlich die Inspektion durch Dritte ist, hängt von Ihrem Lebenszyklus ab, davon, ob Sie agiler sind oder mehr Wasser in Ihren Prozessen stecken. Ich halte es für sinnvoll, Entwürfe / Inspektionen auf hoher Ebene sowie Konstruktionsinspektionen auf Detailebene durchzuführen. Ich denke, es ist auch gut, mehrere Mitglieder eines Teams zur Inspektion einzubeziehen.
quelle
Sie sind absolut notwendig, da sie wenig Erfahrung haben.
quelle