Code Reviews

Immer komplexere Funktionen, immer aufwendigere Designs – genau das ist heutzutage in der Softwareentwicklung nötig, um das digitale Erlebnis auf ein Maximum zu bringen.

Um eine stetig hohe Qualität zu gewährleisten, kommen in der IT verschiedene Mechanismen der Qualitätsprüfung zum Einsatz, unter anderem Code Reviews.

Was ist ein Code Review?

Wie lassen sich Fehler oder Mängel im Code einer Software vermeiden oder die Qualität des Codes verbessen? Die Antwort ist: mit einem Code Review. Ein Code Review, auch als Codeüberprüfung bezeichnet, ist eine systematische Untersuchung von Quellcodes und somit ein Mittel zur Qualitätssicherung in der Softwareentwicklung. Bei diesem Prozess überprüfen Programmierer gegenseitig ihren Code, um möglichst Probleme oder Abweichungen von erfolgreichen Best Practices zu finden. Das bedeutet, hat ein Entwickler seinen Vorgang beendet, kontrolliert ein anderer Entwickler den erstellten Code und prüft die Funktionalität, die Sicherheit, das Design und die User Experience. Bei der Untersuchung sind dabei u.a. folgende Fragen zu beantworten:

  • Gibt es offensichtliche Logikfehler im Code?
  • Sind alle Anforderungen erfüllt?
  • Ist der Code ausreichend mit Tests abgedeckt?
  • Entspricht der neue Code Best Practices?
  • Ist der Code gut lesbar, wartbar und erweiterbar?

Warum sind Code Reviews in der IT so wichtig?

Durch die zunehmenden Anforderungen an Design und Funktionalität, haben sich Code Reviews zu einem unverzichtbaren Bestandteil des Software-Auslieferungsprozesses entwickelt und tragen dadurch zur Verbesserung der Softwarequalität bei. Denn mit der Durchführung eines Code Reviews lassen sich Fehler und „Code-Smells“ rechtzeitig erkennen und beheben. Außerdem ermöglichen Code Reviews einen idealen Wissensaustausch. Entwickler können gleichzeitig lernen und ihre Kompetenz erweitern, indem sie sich gegenseitig Tipps und Tricks zeigen und inspirieren. Ein weiterer Punkt, der für die Anwendung von Code Reviews spricht, ist der Nutzen für den Anwender. Dank der Optimierung des Softwarecodes profitieren Anwender nicht nur von der Qualität der Software, sondern können auch die maximale Digital Experience erleben.

Die Vorteile von Code Reviews auf einen Blick:

  • Verbesserte Softwarequalität
  • Erfahrungs- und Wissensaustausch zwischen Entwicklern
  • Erlernen von neuen Kompetenzen und Verfahrensweisen
  • Frühzeitige Fehlererkennung und -behebung
  • Effektive Arbeit und Zeitersparnis

Welche Möglichkeiten gibt es für einen Code Review?

Entwicklern stehen verschiedene Ansätze zur Verfügung, um einen Code Reviews in ihren Arbeitsprozess zu integrieren. Der Code Review kann dabei persönlich oder remote, gemeinsam im Team, als Meeting oder per Austausch durch praktische Kommunikationstools stattfinden. Die einzelnen Schritte bleiben bei allen Ansätzen gleich, aber die Menge des Inputs sowie die Länge der Feedbackschleifen unterscheiden sich.

Das sind die verschiedenen Arten einen Code Review durchzuführen:  

  • Walkthrough

Der „Walkthrough“-Ansatz wird meist im kleinen Kreis gleichgestellter Mitarbeiter und auf dem Arbeitsplatz des Entwicklers durchgeführt. Ziel ist es, Fehler, Unklarheiten oder Probleme in Dokumenten zu finden. Hierbei handelt es sich um einen Ansatz, bei dem ein Programmierer nach Fertigstellung des Codes sich direkt an einen qualifizierten Teammitglied wendet und diesem den Code zeigt. Dieser Kollege schaut nun sprichwörtlich über die Schultern des Entwicklers und überprüft die Implementierung. Diese Code Review-Art wird daher auch „Over the Shoulder“ genannt. Er gilt als informell, ist aber der einfachste Ansatz für einen Code Review und wenig zeitaufwendig.

  • Pair Programming

Pair Programming (zu deutsch: Paarprogrammierung) ist ein kontinuierlicher Code Review-Ansatz, bei dem zwei Entwickler aus dem Team am selben Arbeitsplatz sitzen und an demselben Code arbeiten. Dabei programmiert aber nur einer von ihnen aktiv, während der andere in Echtzeit Feedback abgibt. Die Rollen werden in der Regel nach einer Weile getauscht. Der Code Review ist also direkt im Prozess der Softwareentwicklung integriert. Dadurch ergibt sich eine potenziell höhere Qualität des Codes bzw. der Software, denn vier Augen sehen mehr als zwei. Als Nachteil könnte dabei die eventuell fehlende Objektivität der Partner gelten. Auch könnte sich diese Methode als ineffizient erwiesen, weil der Prüfer davon abgehalten wird, während dieser Zeit andere produktive Arbeit zu leisten.

  • Toolnutzung

Das wichtigste Ergebnis für Entwickler bei der Überprüfung einer Software und der Anwendung eines Code Reviews ist die Steigerung der Effizienz. Um den Überprüfungsprozess zu erleichtern und zu beschleunigen, nutzen Entwickler immer öfter Code-Review-Tools und automatisierte Tests. Diese toolbasierten Code Reviews erkennen und lösen erste Probleme eigenständig und treffen automatisch eine Vorauswahl für bestimmte Codeteile, die anschließend genauer betrachtet werden müssen. Ein Tool kann also auf mögliche Konflikte hinweisen, die dann dem Reviewer übergeben werden. Der Reviewer gewinnt dadurch wertvolle Zeit. Außerdem ermöglicht die Nutzung von Tools die Durchführung eines Code Reviews direkt vom eigenen Arbeitsplatz aus.

Wie können gute Code Reviews erstellt werden?

Welche Inhalte bei einer Überprüfung untersucht und verbessert werden, lässt sich nicht allgemeingültig sagen. Einige Teams oder Code Reviewer bevorzugen jede Änderung zu überprüfen, während andere eine Art Richtwert definieren, ob eine Überprüfung erforderlich ist oder nicht. Aber was macht einen guten Code Review aus? Für die Überprüfung von Codes gibt es tatsächlich einige Punkte, die Entwickler beachten sollten, um eine möglichst gute Codequalität zu gewährleisten.

Erfahrungen und Kenntnisse des Reviewers

Eine große Rolle bei der Qualität des durchgeführten Code Reviews haben die Erfahrung und die fachliche Kompetenz des Codeprüfers. Denn je weniger ein Codeprüfer Erfahrung hat, desto aufwändiger fällt meistens ein Review aus. Möchte ein Entwickler als Reviewer ein gutes Feedback abgeben, so ist außerdem ausreichend großes Wissen bezüglich der Codebasis unbedingt nötig. Andernfalls kann die Einarbeitung in einen fremden Code viel Zeit kosten.

Ton und Ausdrucksweise des Reviewers

Auch der Kommunikationsstil eines Prüfers ist wichtig. Dazu gehört, dass dieser unterstützend ist und vor allem Probleme gut kommunizieren und sich durchsetzen kann. Kurz gesagt: das richtige Kritisieren ist wichtig für einen guten Code Review. Dabei ist auf den Tonfall besonders zu achten, denn die Kommentare zum Code Review sollten konstruktiv sein und so vermittelt werden, dass sich der Entwickler, der den Code erstellt hat, nicht persönlich angegriffen fühlt. Schließlich geht es nicht darum, den Entwickler schlecht zu reden, sondern darum, die Qualität des Codes zu verbessern.

Gleicher Wissensstand aller Beteiligten

Im Idealfall sollten vor dem Start eines Code Reviews alle beteiligten Entwickler auf dem gleichen bzw. aktuellen Stand sein. Das beinhaltet sowohl die Version des Codes als auch das Wissen über den Code. Nur so kann eine reibungslose Überprüfung sichergestellt werden. Der überprüfende Programmierer muss wissen, was der Teil des Programms machen soll, da ein Code, von dem man nichts weiß, nur schwer zuzuordnen und durchzuschauen ist.

Übung macht den Meister

Es ist klar, dass ein Entwickler bzw. Reviewer Übung braucht, um gute Reviews durchzuführen und effizient zu sein. Da besonders die „schnellen“ Code Reviews bzw. Walkthrough-Reviews so weit verbreitet sind, ist es ratsam, das gesamte Entwicklerteam dazu zu ermutigen, ihren Code regelmäßig gegenseitig zu überprüfen. Das hilft eine positive Review-Kultur im Team aufzubauen und zunehmend Sicherheit bei der Überprüfung zu gewinnen. Denn bei einem Code Review geht es nicht nur darum, etwas zu prüfen und zu ändern, sondern auch darum, gegenseitig etwas beizubringen und voneinander zu lernen.

Länge des Codes

Es ist sehr wichtig, dass der Code Review nicht zu groß wird und Reviewer darauf achten, dass sie nicht zu viel Code auf einmal inspizieren. Denn von tausend Codezellen erschlagen zu werden, kann dazu führen, dass die Konzentration nachlässt und der Code weniger kritisch bewertet wird. Dadurch können schnell Fehler übersehen werden. Das bedeutet, dass bei zunehmender kognitiver Last, die Effektivität des Code Reviews nachlässt. Aus diesem Grund sind kleinere Code Reviews, die häufiger durchgeführt werden, besser als groß angelegte Überprüfungen. Ein genereller grober Richtwert für die Menge und Dauer eines guten Code Reviews sind etwa weniger als 400 Codezeilen und maximal eine Stunde.

Checklisten erstellen

Damit Entwickler bei Code Reviews nicht den Faden verlieren, kommen in Teams immer mehr Checklisten zum Einsatz. Sie helfen einen guten Standard für Code Reviews festzulegen und eine Struktur in den Überprüfungsprozess zu bringen.

Wie sehen Code Review Checklisten aus?

Code Review Checklisten sind eine Art Leitfaden für alle beteiligten Entwickler und stellen sicher, dass nichts vergessen wird. Auf einer Checkliste werden die Punkte notiert, auf die der Code überprüft werden soll. Diese Punkte werden vorher von dem Entwicklerteam entschieden und festgelegt. Wenn ein Team keine Liste hat, ist es ratsam vor Beginn eine zu erstellen. Am Anfang reicht eine kleine aus. Sie kann aber von dem Team mit der Zeit erweitert und optimiert werden. Mit steigender Qualität der Checkliste, nimmt dementsprechend auch die Qualität des Code Reviews und damit des Codes zu. Eine kleine „Basis-Checkliste“ enthält in den meisten Fällen folgende Punkte zum Abhaken:

  • Der Code ist verständlich und leicht wartbar.
  • Festgelegte Code-Standards sind erfüllt.
  • Es sind (automatisierte) Tests für die Änderungen vorhanden.
  • Der Code erfüllt die technischen Anforderungen.

Beispiel für eine erweiterte Checkliste

Eine erweiterte Checkliste hat natürlich mehr Punkte. Zur besseren Übersicht über die vielen Punkte, die bei der Prüfung beachtet werden sollen, können erstellte Listen auch in Kategorien gegliedert werden. Eine erweiterte Checkliste könnte beispielsweise so aussehen:

Architektur und Design

  • Passt der Code in die Gesamtstruktur des Projekts?
  • Wurden alle Projektvorgaben (z.B. Namenskonventionen oder Style Guide) eingehalten?
  • Wurden neue Designvorlagen oder Datenstrukturen eingeführt?
  • Ist der Code an der richtigen Stelle (Systeme, Komponenten, Schichten)?
  • Wurde etwas entwickelt, das schon vorhanden war?

Funktionalität

  • Macht der Code auch das, was im Ticket gefordert und erwartet wird?
  • Macht er mehr als im Ticket beschrieben?
  • Gibt es Bugs (z.B. falsche Zuweisung von Feldern oder fehlende Klammern)?

Lesbarkeit

  • Lässt sich leicht herauskennen, was der Code macht?
  • Geben die verwendeten Namen (u.a. für Felder, Variablen, Parameter, Methoden) auch wirklich das wieder, wofür sie stehen?
  • Sind komplexe Codezeilen und ungewöhnliche Sonderfälle markiert?
  • Liefern Fehlermeldungen genügend Informationen, um später das Verhalten der Software nachzuvollziehen bzw. zu verstehen?

Sonstige Anforderungen

  • Sind die Texte für Anwender auf Tipp- und Grammatikfehler geprüft?

Fazit

Qualitätskontrolle gibt es nicht nur im Supermarkt oder bei Produktionsbetrieben, sondern auch in der IT-Branche. Hier führen Entwickler Code Reviews durch, um die Qualität einer Software bzw. eines Produkts zu erhöhen. Egal ob der Code informell mit einem Kollegen besprochen oder mit Tools ganz strukturiert begutachtet wird – Code Reviews sind aus dem Alltag der meisten Entwickler nicht mehr wegzudenken. Die erste Aufgabe im Code Review ist es, den Code durchzusehen, zu verstehen und aufgrund festgelegter Kriterien zu bewerten. Falls Mängel oder Fehler entdeckt werden, gilt es diese anzusprechen und einen konstruktiven Kommentar zu hinterlegen.

Code Reviews sind aber weit mehr als nur ein Prozess zur Überprüfung eines Softwarecodes. Sie sind auch eine gute Gelegenheit für ein Mentoring und die Verbesserung der Zusammenarbeit im Entwicklerteam.