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.
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:
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.
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.
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 (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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
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
Funktionalität
Lesbarkeit
Sonstige Anforderungen
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.