Code Reviews sind ein wesentlicher Bestandteil professioneller Softwareentwicklung. In der ABAP-Welt gewinnen sie durch moderne Tools wie abapGit und ADT-Integration zunehmend an Bedeutung. Dieser Artikel zeigt, wie du Code Reviews effektiv gestaltest und dabei die Codequalitaet sowie die Teamkultur verbesserst.
Der Wert von Code Reviews
Code Reviews bringen weit mehr als nur Fehlersuche:
Aspekt
Nutzen
Qualitaetssicherung
Fehler frueh erkennen, bevor sie in Produktion gelangen
Wissenstransfer
Neue Teammitglieder lernen, erfahrene teilen Know-how
Konsistenz
Einheitlicher Codestil und Architekturmuster
Dokumentation
Review-Kommentare als lebende Dokumentation
Sicherheit
Vier-Augen-Prinzip bei kritischen Aenderungen
Mentoring
Junior-Entwickler lernen von Seniors
Statistiken zu Code Reviews
Studien zeigen konsistent den Wert von Code Reviews:
Code Reviews finden 60-70% der Defekte vor dem Testing
Ohne Reviews kommen etwa 15 Fehler pro 1000 Codezeilen in Produktion
Mit Reviews sinkt diese Zahl auf etwa 5 Fehler
Die fruehe Fehlererkennung spart erhebliche Kosten gegenueber spaeter Korrektur
Checkliste fuer ABAP Code Reviews
Eine strukturierte Checkliste hilft, konsistente Reviews durchzufuehren.
1. Funktionalitaet
Erfuellt der Code die Anforderungen?
Sind alle Akzeptanzkriterien abgedeckt?
Wurden Edge Cases beruecksichtigt?
Ist die Fehlerbehandlung vollstaendig?
2. Code-Qualitaet
Sind Namen aussagekraeftig (Variablen, Methoden, Klassen)?
Sind Methoden kurz und fokussiert (Single Responsibility)?
Gibt es Code-Duplikation (DRY-Prinzip)?
Ist der Code gut lesbar ohne viele Kommentare?
3. ABAP-spezifisch
Werden moderne ABAP-Konstrukte verwendet?
Sind SELECT-Statements performant (Indizes, Aggregationen)?
Wird auf internen Tabellen effizient gearbeitet?
Sind Authority Checks vorhanden wo noetig?
4. Sicherheit
Keine SQL-Injection Moeglichkeiten?
Authority Checks fuer sensible Operationen?
Keine hartcodierten Credentials?
Input-Validierung vollstaendig?
5. Testbarkeit
Gibt es ABAP Unit Tests?
Sind die Tests aussagekraeftig?
Ist der Code testbar strukturiert (Dependency Injection)?
Sind Test-Doubles fuer externe Abhaengigkeiten vorhanden?
“Der Variablenname lv_val ist nicht aussagekraeftig. Was wird hier gespeichert? Bitte einen beschreibenden Namen wie lv_order_count oder lv_total_amount verwenden.”
Methodenlaenge pruefen
" Review-Kommentar: Methode zu lang, mehrere Verantwortlichkeiten
METHODprocess_order.
" 200 Zeilen Code...
" Validierung
" Berechnung
" Datenbankzugriff
" Ausgabe
ENDMETHOD.
Typischer Review-Kommentar:
“Diese Methode hat 200+ Zeilen und mehrere Verantwortlichkeiten. Bitte in kleinere Methoden aufteilen: validate_order(), calculate_totals(), save_to_database(), prepare_output().”
Boolean Parameter vermeiden
" Review-Kommentar: Boolean-Parameter unklar
CALLMETHOD process_data( iv_flag =abap_true ).
Typischer Review-Kommentar:
“Boolean-Parameter sind schwer lesbar. Was bedeutet iv_flag = abap_true? Besser: Separate Methoden wie process_data_in_test_mode() oder einen Enum-Typ verwenden.”
Exceptions statt Return Codes
" Review-Kommentar: Return Code statt Exception
METHODget_customer.
IF customer_not_found.
rv_success =abap_false.
RETURN.
ENDIF.
ENDMETHOD.
Typischer Review-Kommentar:
“Bitte Exceptions statt Return Codes verwenden. Exceptions machen den Fehlerfall explizit und erzwingen die Behandlung. Beispiel: RAISE EXCEPTION TYPE cx_customer_not_found.”
Moderne Syntax verwenden
" Review-Kommentar: Veraltete Syntax
DATA: lt_orders TYPE TABLE OF zorder.
CLEAR lt_orders.
REFRESH lt_orders.
MOVE wa_order TO lt_orders.
APPEND lt_orders.
" Empfohlen: Moderne Syntax
DATA(lt_orders) =VALUE zorder_tt( ).
APPEND wa_order TO lt_orders.
Typischer Review-Kommentar:
“Bitte moderne ABAP-Syntax verwenden. MOVE ... TO und REFRESH sind veraltet. Inline-Deklarationen mit DATA() und VALUE-Konstruktor sind lesbarer.”
Konstruktives Feedback geben
Die Art, wie Feedback gegeben wird, ist entscheidend fuer die Teamdynamik.
Do’s beim Feedback
Prinzip
Beispiel
Fragen statt Anweisungen
”Hast du ueberlegt, ob hier ein Loop ueber den Index performanter waere?”
Ich-Botschaften
”Ich verstehe nicht ganz, was diese Variable speichert”
Konkrete Vorschlaege
”Hier koennte READ TABLE ... BINARY SEARCH die Performance verbessern”
Positives erwaehnen
”Die Fehlerbehandlung ist sehr sauber geloest”
Erklaeren warum
”Diese Aenderung verbessert die Lesbarkeit, weil…”
Don’ts beim Feedback
Vermeiden
Warum
”Das ist falsch”
Zu harsch, nicht konstruktiv
”Jeder weiss, dass…”
Herablassend
”Warum hast du nicht…?”
Vorwurfsvoll
Nur Kritik
Demotivierend
Persoenliche Kritik
”Du hast schlechten Code geschrieben”
Beispiele fuer gute Review-Kommentare
Statt:
“Das ist falsch, man macht das nicht so.”
Besser:
“Diese Loesung funktioniert, aber ich sehe ein Risiko bei grossen Datenmengen. Hast du ueberlegt, die Verarbeitung in Paketen zu machen? Beispiel: LOOP AT lt_data ASSIGNING FIELD-SYMBOL(<ls_data>) PACKAGE SIZE 1000.”
Statt:
“Schlechte Benennung.”
Besser:
“Der Methodenname do_it() verraet nicht, was die Methode macht. Wie waere es mit calculate_order_total() oder send_notification()?”
Feedback-Kategorien
Nutze Labels, um die Wichtigkeit zu signalisieren:
Label
Bedeutung
Beispiel
[BLOCKING]
Muss vor Merge behoben werden
Sicherheitsluecke, Absturz
[SUGGESTION]
Optionale Verbesserung
Besserer Variablenname
[QUESTION]
Verstaendnisfrage
”Warum wird hier…?”
[NITPICK]
Kleinkram, optional
Formatierung, Leerzeichen
[PRAISE]
Lob
”Sehr elegant geloest!”
Code Review Tools fuer ABAP
ADT (ABAP Development Tools)
ADT in Eclipse bietet grundlegende Review-Unterstuetzung:
Vergleichsfunktionen:
Objektvergleich zwischen Systemen (Development vs. Quality)
Versionshistorie im Transportwesen
Lokale Aenderungshistorie
Navigation:
Call Hierarchy fuer Impact-Analyse
Where-Used-Lists fuer Aenderungsauswirkungen
Quick-Fix Vorschlaege fuer Common Issues
ATC Integration:
ABAP Test Cockpit direkt in der IDE
Sofortige Rueckmeldung zu Code-Qualitaet
Custom Checks definierbar
abapGit fuer Code Reviews
abapGit ermoeglicht moderne Pull-Request-basierte Reviews:
Workflow mit abapGit:
Feature Branch erstellen
Repository > Branch > Create Branch
Code entwickeln und committen
Repository > Stage > Commit
Push zu Remote Repository
Repository > Push
Pull Request erstellen (auf GitHub/GitLab)
Beschreibung der Aenderungen
Reviewer zuweisen
Labels hinzufuegen
Review durchfuehren
Diff-Ansicht nutzen
Inline-Kommentare schreiben
Approve/Request Changes
Merge nach Approval
Squash Merge fuer saubere Historie
Branch loeschen
Vorteile von abapGit-Reviews:
Feature
Nutzen
Diff-Ansicht
Aenderungen auf einen Blick
Inline-Kommentare
Feedback direkt am Code
Threaded Discussions
Diskussionen nachvollziehbar
Approval-Workflow
Formaler Freigabeprozess
Integration
CI/CD Checks vor Merge
SAP-eigene Tools
ABAP Test Cockpit (ATC):
Automatische Statische Code-Analyse
Integrierbar in Review-Prozess
Custom Checks moeglich
Transport Management:
Workflow fuer Freigaben
Vier-Augen-Prinzip
Dokumentation der Aenderungen
Code Review in CI/CD integrieren
CI/CD Pipelines koennen Review-Prozesse automatisieren und absichern.
Code Reviews sind eine Investition in die Codequalitaet und Teamkultur. Mit den richtigen Praktiken und Tools werden sie zu einem wertvollen Bestandteil des Entwicklungsprozesses.