Codeüberprüfung - Verbesserung des Prozesses

Bild

Stellen Sie sich ein Team vor, in dem keine Codeüberprüfung durchgeführt wird. Entwickler schreiben Code und nehmen ohne Überprüfung alle Änderungen am Hauptzweig vor. Nach einer Weile wird die Funktionalität erweitert oder es werden Fehler gefunden, sie kehren zum Quellcode zurück, und dort werden alle Variablen mit einem Buchstaben benannt, der Architektur wird nicht gefolgt, und die Qualität ist nicht die beste. Dieser Code von schlechter Qualität wird sich ansammeln und eines Tages wird der Moment kommen, in dem das Projekt mit jeder kleinen Innovation auseinanderzufallen beginnt: Im besten Fall wird sich die Entwicklungszeit verlängern, im schlimmsten Fall wird die Projektunterstützung unmöglich. Und das trotz der Tatsache, dass die Aufgabe einst erledigt war und alles gut funktionierte.

Wie kann dies vermieden werden?Die Antwort auf die Frage im Titel lautet Code Review.
Die Codeüberprüfung ist eine Codeprüfung auf Fehler, die die Stabilität und Qualität des Codes verbessert.

Stellen Sie sich nun ein Team vor, in dem die Codeüberprüfung bereits im Gange ist, die Entwickler jedoch untereinander schwören, dass die Pull-Anforderung lange Zeit nicht genehmigt wurde und die Aufgaben einfrieren. Der Prozess vom Beginn der Aufgabe bis zu ihrem Erscheinen im Projekt wird gestreckt und damit die gesamte Arbeit verlangsamt.
Pull-Anforderung / Zusammenführungsanforderung ist eine Anforderung an das Projektteam (Person oder Personengruppe) zur Genehmigung und Anwendung von Änderungen in der ausgewählten Niederlassung. Sobald die Pull-Anfrage erstellt wurde, findet vor der Genehmigung eine Diskussion des geschriebenen Codes statt. Während der Diskussion können Änderungen vorgeschlagen werden. Nach der Genehmigung fallen die aktuellen Änderungen in den ausgewählten Zweig.

Nachfolgend sind Empfehlungen aufgeführt, um die Überprüfung des Codes zu beschleunigen und seine Qualität zu verbessern.

Wir teilen die Frage in drei Teile und betrachten jeden einzeln:

  • Technischer Teil: Wie überprüfe ich den Code und worauf muss ich beim Überprüfen achten?
  • Kommunikationsteil: Wie können Streitigkeiten vermieden und Stress während der Diskussion abgebaut werden?
  • Organisatorischer Teil: Was kann getan werden, um den Code-Überprüfungsprozess effizient zu gestalten?

Teil 1. Überprüfen des Codes


Führen Sie den Autorencode zu Hause aus


Führen Sie den Code selbst aus und sehen Sie, wie die Änderungen in Verbindung mit dem Rest des Codes funktionieren. Dies hilft, Problembereiche zu finden, die in der webbasierten Oberfläche nicht sichtbar sind. Versuchen Sie, den Code umfassend zu sehen, und konzentrieren Sie sich nicht nur auf lokale Änderungen. So finden Sie den Code schnell heraus und finden schnell architektonische Ungenauigkeiten, falls vorhanden.

Denken Sie an die Benutzererfahrung


Achten Sie darauf, wie sich Änderungen im Code auf den Endbenutzer auswirken. Selbst der am schönsten geschriebene Code kann für Benutzer nutzlos sein, was zu zusätzlichen Aufgaben und Fehlern führen und den Ruf des Unternehmens und des Produkts beeinträchtigen kann.

Wir betrachten die allgemeine Logik


Entwickler können ihr Problem erfolgreich lösen, aber die Arbeit anderer Codeteile unterbrechen. Um dies zu verhindern, sollten Sie nicht nur untersuchen, wie eine bestimmte Aufgabe gelöst wird, sondern auch, wie sich Änderungen auf die Arbeit anderer Dienste, Module und das gesamte Projekt insgesamt auswirken.

Wir betrachten die Codearchitektur


Die Architektur des Codes bestimmt, wie viel Zeit wir in Zukunft für das Erweitern, Hinzufügen von Funktionen oder Bearbeiten eines Fehlers aufwenden werden. Die Architektur des Codes kann sich auch auf das mögliche Auftreten von Fehlern bei Änderungen im Projekt auswirken. Im Idealfall sollte das Erweitern und Hinzufügen neuer Funktionen nicht zu einem Refactoring führen.

Wir schreiben einfacher


Achten Sie auf die erneute Komplikation des Codes: Je einfacher der Code ist, desto einfacher ist er zu lesen und desto einfacher zu warten. Befreien Sie sich von komplexen Codeteilen.

Multithreading


Wenn das Projekt die Arbeit in mehreren Threads impliziert, sehen Sie, was passiert, wenn sich die Ausführung des Codes in einem der Threads verzögert, und wie solche Fälle bearbeitet werden.

Übermäßige Optimierung


Wie der Klassiker Donald Knuth schrieb, ist vorzeitige Optimierung die Wurzel allen Übels. Es ist besser, nur das zu optimieren, was hier und jetzt benötigt wird.

Wir arbeiten Fehler aus


Achten Sie darauf, wie sich das Projekt verhält, wenn es nicht möglich war, eine Codezeile, einen Codeblock oder eine Anforderung an den Server auszuführen. Oft unterbrechen Entwickler die Ausführung einer Funktion ohne Fehlerausgabe, aber solche Fälle müssen herausgearbeitet werden.

Beachtung


Der Code muss der Vereinbarung und dem Codestil entsprechen. Die Einheitlichkeit des Codes ist keine Laune, sondern eine Notwendigkeit: Ein solcher Code ist leichter zu pflegen und ein solcher Code ist leichter zu verstehen.

Namen und Aussehen


Denken Sie an andere Programmierer, die Ihren Code verstehen müssen. Lesbarer Code vereinfacht die weitere Unterstützung. Namen müssen verständlich sein und die Klasse, das Objekt, die Funktion usw. genau beschreiben.

Code Kommentare


Kommentare sollten die Frage beantworten: "Warum wird das gemacht?" Und nicht "Wie wird das gemacht?". Merk dir das.

Teil 2. Wir diskutieren


Die Hauptregel der Diskussion: Jeder Kommentar sollte sich an den Code richten und nicht an die Person, die ihn geschrieben hat. Es funktioniert in die entgegengesetzte Richtung - nehmen Sie Kommentare nicht als Kritik an Ihnen persönlich. Die Aufgabe der Codeüberprüfung besteht darin, Ihren Code zu verbessern, da das, was Sie nicht bemerkt haben, möglicherweise von anderen bemerkt wird. Kollegen können alternative Lösungen vorschlagen, und dies ist das Potenzial für berufliches Wachstum. Es ist wichtig, sich daran zu erinnern, dass die Diskussion des Codes kein Witzwettbewerb oder eine Show von „wer weiß mehr“ ist, daher sind Sarkasmus, versteckte Aggression und Unhöflichkeit darin unangemessen.

In der Regel wird eine Pull-Anfrage für spezielle Webhosting-Dienste (github.com, bitbucket.org, gitlab.com usw.) ausgeführt, bei denen es möglich ist, die Änderungen anzuzeigen und einen Kommentar zu einem bestimmten Code zu hinterlassen.

Wir halten uns an die Vereinbarung


Auch hier muss der Code der Vereinbarung entsprechen. Wenn eine solche Vereinbarung jedoch nicht besteht, sollten Sie einen Kollegen nicht bitten, ein Leerzeichen oder einen Einzug in den Code einzufügen.
In kontroversen Momenten können Sie dem gesamten Team direkt im Codeüberprüfungsprozess zustimmen. Bei der folgenden Codeüberprüfung ist es jedoch besser, diese Regeln einzuhalten, sodass jeder sie leichter akzeptieren kann. Eine dokumentierte Richtlinie im Schreibstil beseitigt übrigens fast alle Streitigkeiten.

Wir bieten eine Alternative


Vermeiden Sie Aussagen wie "Sie haben falsch gemacht ...", "Warum, warum schreiben Sie so?" und andere. Sie werden als Kritik wahrgenommen und führen zu Ausreden. Es ist besser, einen Kommentar zum Inhalt des Codes zu schreiben, ohne auf die Identität des Autors zurückzugreifen. Vermeiden Sie auch Befehle und Zwang: Menschen mögen es nicht, wenn jemand sie bestellt, und nehmen solche Kommentare negativ wahr.

Sie können wie folgt vorgehen:

  1. Wir schreiben, was mit dem Code nicht stimmt
  2. Warum ist es besser, nicht zu schreiben?
  3. Wir bieten alternative Möglichkeiten

Wir bleiben im Rahmen des Problems


Oft können Sie Kommentare zu dem Code sehen, der zuvor war und nicht berührt wurde. Sie müssen nicht kommentieren, was für die Aufgabe nicht relevant ist. Änderungen von Drittanbietern können viel Zeit in Anspruch nehmen und negativ wahrgenommen werden. Es ist daher besser, sich anzusehen, wie eine Person die aktuelle Aufgabe erledigt hat, und sie nicht zu bitten, das Projekt umzugestalten.

Loben


Wenn Sie eine interessante oder coole Lösung sehen, können Sie sie gerne loben. Darüber hinaus ist es eine große Motivation für Ihre Kollegen, auch in Zukunft guten Code zu schreiben.

Alle Kommentare sind gleich.


Es kommt oft vor, dass ein Programmierer technisch mehr weiß als der andere, was durch die Abstufung der Junior-, Mittel-, Senior- und Teamleiter belegt wird. Es lohnt sich nicht, die Kommentare einer Gruppe als wichtiger hervorzuheben. Dies entwertet die Meinung einiger Entwickler, was zu Gleichgültigkeit und formeller Teilnahme an der Codeüberprüfung führen kann. Wenn alle Meinungen gleich wichtig sind, ist die Codeüberprüfung produktiver.

Drücken Sie Ihre Gedanken klar aus


Schreiben Sie für eine produktive Kommunikation so detailliert wie möglich und erklären Sie jedes Detail. Jeder hat einen anderen Wissensstand, und bisher hat niemand gelernt, Gedanken zu lesen.

Fragen stellen


Fragen Sie Ihre Kollegen, warum die von ihnen vorgeschlagene Option besser ist als Ihre derzeitige. Dies ist eine großartige Gelegenheit, etwas Neues zu lernen und professionell zu wachsen.

Wir lösen Konflikte


Es kommt vor, dass eine Person nicht alle Argumente akzeptiert und ihre eigenen nicht anbieten kann, sich weigert, etwas zu tun. Einige praktische Tipps für diesen Fall:

  • Die meisten Konfliktsituationen können durch persönliches Sprechen in einem freundlichen Ton gelöst werden.
  • Sie können zugeben, da Sie im Krieg keinen Code schreiben können.
  • Sie können das gesamte Team anziehen und gemeinsam entscheiden, wie der Code am besten geschrieben werden soll.
  • Lassen Sie in der aktuellen Codeüberprüfung alles so, wie es ist, und trennen Sie die kontroversen Themen von Aufgaben für das Refactoring, Aufgaben, da die Wörter „dann beheben“ in der Regel nie zum Leben erweckt werden.

Teil 3. Den Prozess verbessern


Wir beschreiben, was sie getan haben


Wir beschreiben das Wesentliche der Aufgabe im Pull-Request-Header (oder machen einen separaten Kommentar) und welche Schritte unternommen wurden, um sie abzuschließen.

Teilen Sie die Pull-Anfrage in Teile


Ein großer Teil wird lange beobachtet, lange diskutiert und lange korrigiert. Teilen Sie den Code in kleine logische Teile - auf diese Weise wird der Prozess viel schneller.

Auf alle Kommentare antworten


Es ist ratsam, auf jeden Kommentar zu antworten, damit das Team keine Unklarheiten hat. Andere Entwickler sollten verstehen, dass Sie ihren Kommentar gelesen, die erforderlichen Arbeiten ausgeführt und Korrekturen vorgenommen haben. Das ständige Öffnen einer Pull-Anfrage und das Überprüfen, was behoben wurde und was nicht, ist sehr unpraktisch und zeitaufwändig.

Suche alle?


Es gibt verschiedene Ansätze - das Maximum aus dem Möglichen herauszuholen oder zuerst wichtige architektonische Momente zu kommentieren und nach der Korrektur auf die kleinen Dinge zu achten.
Beide Methoden haben das Recht auf Leben. Ich glaube, dass die zweite Option zeitaufwändiger ist: Stellen Sie sich vor, dass Sie nach der Korrektur den Code erneut vollständig überprüfen, kommentieren und erneut auf die Korrekturen warten müssen. Es ist viel schneller, den Code einmal sorgfältig durchzugehen, Kommentare zu hinterlassen und dann die Korrekturen zu überprüfen.
Wenn es architektonische Ungenauigkeiten gibt und klar ist, dass kleinere Fehler selbst verschwinden, nachdem die Architektur korrigiert wurde, sollten Sie keine Zeit damit verschwenden, Details in diesem Abschnitt des Codes zu kommentieren.

Auf alle warten?


Sie können nicht warten, bis alle die Pull-Anforderung genehmigt haben und zustimmen, dass die Genehmigung von 80% der Prüfer ausreicht, um die Aufgabe zu schließen. Dies beschleunigt das Eindringen von Code in den Hauptzweig, was zweifellos für Geschäftsprozesse vorteilhafter ist, jedoch zu Meinungsverschiedenheiten im Team und Gleichgültigkeit gegenüber der Codeüberprüfung führen kann.

Die zweite Möglichkeit besteht darin, auf die Genehmigung aller beteiligten Entwickler zu warten. Die Qualität des Codes wird zunehmen, aber der Prozess selbst wird sich erheblich verlangsamen. Bei der Wahl zwischen Geschwindigkeit oder Qualität sollte jedes Team seine eigene Entscheidung treffen.

Kleine Dinge


Wenn der Code keine ernsthaften Kommentare enthält, müssen Sie nicht warten, bis alle kleinen Ungenauigkeiten beseitigt sind. Sie können in den Kommentaren angegeben werden und die Pull-Anfrage sofort genehmigen - der Autor des Codes wird sich ruhiger fühlen, seine Loyalität gegenüber dem Team wird zunehmen, er wird sich vertrauenswürdig fühlen. Und natürlich erhöht sich die Geschwindigkeit der Pull-Anforderung.

Fazit


Die Überprüfung des Codes ist ein wichtiger Teil des Entwicklungsprozesses, der sich auf das gesamte Projekt auswirkt. Daher ist es gefährlich, ihn zu ignorieren. Einige dieser Empfehlungen beschleunigen die Codeüberprüfung, andere verbessern sie. Ich hoffe, dass meine Erfahrung und mein Wissen den Lesern dieses Artikels nützlich sein werden.

All Articles