Introducción: ¿para qué sirve el code review en PHP?
Code review (revisión de código) es el proceso en el que uno o varios desarrolladores revisan el código escrito por un colega antes de que llegue a la rama principal del proyecto. Para los desarrolladores PHP principiantes, esta práctica puede parecer intimidante, pero en realidad es una herramienta poderosa de crecimiento. El code review ayuda no solo a encontrar errores, sino también a mejorar la arquitectura, la seguridad y la legibilidad del código. En este artículo, analizaremos en qué fijarse al revisar código PHP y cómo dar retroalimentación para que sea útil, no ofensiva.
1. Qué revisar en el código PHP: categorías principales
Para que la revisión sea estructurada, divida la verificación en varias áreas clave. Esto ayudará a no pasar por alto detalles importantes y a darle al autor recomendaciones claras.
1.1. Sintaxis y estándares de codificación (PSR)
Lo primero que salta a la vista es el estilo del código. La comunidad PHP ha desarrollado los estándares PSR (PHP Standards Recommendations), que simplifican la lectura y el mantenimiento del código. Verifique:
- Cumplimiento de
PSR-12(sangrías, espacios, llaves). - Nombres de clases (CamelCase), métodos y variables (camelCase).
- Ausencia de espacios y líneas en blanco innecesarios.
Ejemplo de mal estilo:
class userController{function getUser($id){return $id;}}Ejemplo de buen estilo (PSR-12):
class UserController{ public function getUser(int $id): ?User { return $id; }}1.2. Seguridad
PHP es un lenguaje donde es fácil cometer vulnerabilidades. Preste especial atención a:
- Inyección SQL: use consultas preparadas (PDO o mysqli), no concatenación de cadenas.
- XSS (Cross-Site Scripting): escape la salida con
htmlspecialchars(). - Verificación de tipos: use tipado estricto (
declare(strict_types=1);).
Ejemplo de código inseguro:
$sql = "SELECT * FROM users WHERE id = " . $_GET['id'];$result = mysqli_query($conn, $sql);Versión segura:
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');$stmt->execute(['id' => (int)$_GET['id']]);1.3. Rendimiento y lógica
Verifique si el código realiza operaciones innecesarias. Por ejemplo:
- Evite consultas en bucles — use JOIN o subconsultas.
- No use
@para suprimir errores — esto oculta problemas. - Verifique que las funciones no hagan demasiado (principio de responsabilidad única).
Ejemplo de código lento:
foreach ($userIds as $id) { $user = User::find($id); // N consultas}Versión optimizada:
$users = User::whereIn('id', $userIds)->get(); // 1 consulta2. Cómo dar retroalimentación: reglas para principiantes
Incluso si encuentra muchos errores, es importante presentar la información de manera que el autor no la tome a mal. Aquí hay algunos principios.
2.1. Sea concreto y objetivo
En lugar de «este código es malo», escriba: «En la línea 12 se usa concatenación SQL, lo que puede provocar una inyección. Recomiendo reemplazarlo con una consulta preparada». Explique por qué es un problema, no solo señálelo.
2.2. Use el «sándwich» de retroalimentación
Empiece con un comentario positivo, luego señale las deficiencias y termine con un consejo constructivo. Por ejemplo:
«¡Excelente que haya usado tipado para los argumentos! Sin embargo, el método getUser() devuelve una cadena, no un objeto User — esto podría romper el tipado en otros lugares. Sugiero cambiar el tipo de retorno a User o null.»
2.3. Ofrezca alternativas, no critique
En lugar de «Elimine este parche», en