Code-Review in Java: Was zu prüfen ist und wie man Feedback gibt
\nCode-Review (Code-Überprüfung) ist nicht nur eine Formalität, sondern eine der effektivsten Methoden, um die Codequalität zu verbessern und das professionelle Niveau des Teams zu steigern. Für Java-Entwickler-Anfänger kann die Teilnahme an Reviews einschüchternd wirken: "Was, wenn ich einen Bug übersehe?", "Wie sage ich einem Kollegen, dass sein Code nicht perfekt ist?". In diesem Artikel analysieren wir, worauf bei der Überprüfung von Java-Code zu achten ist und wie man Feedback gibt, das nützlich und nicht verletzend ist.
\n\n1. Was in Java-Code prüfen: Von Syntax bis Architektur
\nCode-Review beschränkt sich nicht auf die Suche nach Tippfehlern. Ein guter Reviewer betrachtet den Code systematisch. Hier sind die wichtigsten Prüfkategorien für Java-Projekte:
\n\n1.1. Korrektheit und Logik
\nDie erste und wichtigste Frage: "Löst der Code die gestellte Aufgabe?". Prüfen Sie:
\n- \n
- Grenzfälle (null, leere Collections, negative Werte). \n
- Die Logik von Bedingungsanweisungen und Schleifen. \n
- Die korrekte Behandlung von Ausnahmen (verwenden Sie
Exceptionnicht als universelle Lösung). \n
Beispiel für schlechten Code:
\npublic int divide(int a, int b) {\n return a / b; // Potenzielle Division durch Null\n}\nWas vorschlagen:
\npublic int divide(int a, int b) {\n if (b == 0) {\n throw new IllegalArgumentException("Der Divisor darf nicht Null sein");\n }\n return a / b;\n}\n\n1.2. Lesbarkeit und Stil
\nJava ist eine Sprache mit etablierten Konventionen (Java Code Conventions, Google Java Style). Achten Sie auf:
\n- \n
- Namen von Variablen, Methoden, Klassen (sollten aussagekräftig sein). \n
- Formatierung (Einrückungen, Leerzeichen, Zeilenlänge). \n
- Vorhandensein von magischen Zahlen (ziehen Sie sie in Konstanten heraus). \n
Beispiel:
\n// Schlecht\ndouble x = 3.14159 * r * r;\n\n// Gut\nprivate static final double PI = 3.14159;\ndouble area = PI * radius * radius;\n\n1.3. Leistung und Optimierung
\nFür Java besonders wichtig:
\n- \n
- Vermeiden Sie unnötige Objekterstellung in Schleifen. \n
- Verwenden Sie
StringBuilderfür die String-Verkettung in Schleifen. \n - Überprüfen Sie die Komplexität von Algorithmen (O(n), O(n log n)). \n
Beispiel:
\n// Schlecht (es werden viele String-Objekte erstellt)\nString result = "";\nfor (int i = 0; i < 1000; i++) {\n result += i;\n}\n\n// Gut\nStringBuilder sb = new StringBuilder();\nfor (int i = 0; i < 1000; i++) {\n sb.append(i);\n}\nString result = sb.toString();\n\n1.4. Testbarkeit und Tests
\nÜberprüfen Sie, ob der neue Code mit Unit-Tests abgedeckt ist. Achten Sie auf:
\n- \n
- Vorhandensein von Tests für Grenzfälle. \n
- Fehlen von Abhängigkeiten von externen Systemen (DB, API) in Unit-Tests. \n
- Lesbarkeit der Tests selbst (
assert-Methode mit verständlichen Nachrichten). \n
2. Wie man Feedback gibt: konstruktiv und ohne Toxizität
\nSelbst das korrekteste Code-Review kann scheitern, wenn das Feedback aggressiv oder unkonkret gegeben wird. Hier sind einige Regeln für Anfänger:
\n\n2.1. Die "Sandwich"-Regel
\nBeginnen Sie mit Positivem, weisen Sie dann auf Mängel hin, und enden Sie mit einer Ermutigung. Zum Beispiel:
\n- \n
- Positiv: "Tolle Idee, die Validierung in eine separate Methode auszulagern!" \n
- Anmerkung: "Aber hier wäre es besser,
Optionalanstelle von null zurückzugeben, umNullPointerExceptionzu vermeiden." \n - Abschluss: "Ansonsten ist der Code sauber, danke für die Arbeit!" \n
2.2. Verwenden Sie "Ich"-Aussagen und Fragen
\nSagen Sie statt "Du hast das falsch geschrieben" lieber: "Ich glaube, hier könnte ein Bug bei einer leeren Liste auftreten. Was denkst du?". Dies reduziert die Abwehrreaktion und lenkt das Gespräch in konstruktive Bahnen.