Einleitung: Warum Code-Review nicht nur "Fehler finden" ist
Code-Review (Code-Überprüfung) ist eines der effektivsten Werkzeuge zur Verbesserung der Qualität eines Softwareprodukts. In der PHP-Community, wo oft Erbe von "Spaghetti-Code" und eine Mischung aus proceduralen und OOP-Stilen vorkommt, wird eine durchdachte Überprüfung besonders wichtig. Viele Entwickler sehen es jedoch als "Jagd auf Fehler" oder, schlimmer noch, als eine Möglichkeit, sich selbst zu profilieren. Das eigentliche Ziel von Code-Review ist es, Wissen zu vermitteln, die Einheitlichkeit der Codebasis sicherzustellen und potenzielle Probleme zu verhindern, bevor sie in die Produktion gelangen.
In diesem Artikel analysieren wir, worauf man bei der Überprüfung von PHP-Code konkret achten sollte und wie man Feedback so gibt, dass das Team stärker wird, anstatt sich zu ärgern.
1. Was in PHP-Code prüfen: Eine Checkliste für den Reviewer
Damit das Review systematisch und nicht chaotisch ist, verwenden Sie die folgende Checkliste. Sie ist in Schlüsselkategorien unterteilt.
1.1. Sicherheit (Security)
PHP ist eine Sprache, bei der Sicherheitsfehler teuer sind. Prüfen Sie:
- SQL-Injection: Werden prepared statements (PDO oder MySQLi) verwendet? Die Verkettung von Strings in Abfragen ist verboten.
- XSS (Cross-Site Scripting): Wird die gesamte Benutzerausgabe durch
htmlspecialchars()oder Template-Engines (Twig, Blade) maskiert? - CSRF-Schutz: Sind Token in Formularen vorhanden?
- Serverseitige Validierung: Verlassen Sie sich nicht nur auf die clientseitige Validierung.
<?php// SCHLECHT: SQL-Injection$query = "SELECT * FROM users WHERE id = " . $_GET['id'];
// GUT: PDO mit prepared statement$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");$stmt->execute(['id' => $_GET['id']]);?>1.2. Einhaltung der PSR-Standards
PHP-FIG (Framework Interop Group) hat Standards entwickelt, denen die meisten modernen Projekte folgen. Prüfen Sie:
- PSR-12: Einrückungen (4 Leerzeichen), geschweifte Klammern, Namensgebung (camelCase für Methoden, snake_case für Variablen).
- PSR-4: Autoloading von Klassen und Namespaces.
Verwenden Sie automatische Tools (PHP CodeSniffer, PHP-CS-Fixer), um keine Zeit mit manueller Formatierung zu verschwenden.
1.3. Architektur und SOLID
Auch in einem kleinen Projekt helfen die SOLID-Prinzipien, einen "großen Schmutzkübel" zu vermeiden. Achten Sie auf:
- Single Responsibility: Eine Methode/Klasse – eine Aufgabe. Wenn eine Methode 3 Dinge tut, ist das ein Grund für Refactoring.
- Dependency Injection: Verwenden Sie
newnicht innerhalb von Klassen, sondern übergeben Sie Abhängigkeiten über den Konstruktor. - Keine "göttlichen Objekte": Eine Klasse sollte nicht alles über das System wissen.
1.4. Performance
Optimieren Sie nicht voreilig, aber offensichtliche Anti-Patterns sollten hervorgehoben werden:
- Abfragen in Schleifen (N+1-Problem).
- Verwendung von
mysql_*-Funktionen (sie wurden in PHP 7+ entfernt). - Fehlende Indizes in der Datenbank für häufige Abfragen.
2. Wie man Feedback gibt: Die Kunst der konstruktiven Kritik
Selbst die korrekteste Liste von Anmerkungen bringt keinen Nutzen, wenn das Feedback wie "das ist schrecklicher Code, schreib es neu" klingt. Hier sind einige Regeln.
2.1. Die "Sandwich"-Regel
Beginnen Sie mit Positivem, dann die Anmerkung, dann Unterstützung.
- Positiv: "Tolle Verwendung von Interfaces, der Code ist flexibler geworden."
- Anmerkung: "Aber hier gibt es eine potenzielle XSS-Schwachstelle – lassen Sie uns die Ausgabe maskieren."
- Unterstützung: "Ansonsten ist die Logik korrekt, nach der Korrektur kann gemergt werden."
2.2. Fragen statt Anweisungen
Statt "Mach es anders" fragen Sie: "Was wäre, wenn wir diese Logik auslagern?"