NOTAS WEB
Clean Code: Cómo escribir código que no te haga decir «WTF»
¿Alguna vez has abierto un archivo y has pensado: «¿Quién escribió este desastre?» No estás solo. Un código desordenado es una pesadilla para cualquier desarrollador. La buena noticia es que podemos cambiar eso aplicando los principios de Clean Code.
En este artículo, exploraremos cómo escribir código limpio en PHP usando las enseñanzas de Clean Code de Robert C. Martin (Uncle Bob). Pero estos aprendizajes créeme que te valdrán para cualquier lenguaje o framework, porque es agnóstico del lenguaje que uses. Prepárate para aprender técnicas prácticas con ejemplos claros y fáciles de implementar.
📖 ¿Qué es Clean Code y por qué debería importarte?
Clean Code o «Código Limpio» es un estándar de programación que promueve la escritura de código:
✅ Legible: Fácil de entender para otros desarrolladores (o tu yo futuro).
✅ Mantenible: Que pueda modificarse sin romperse con facilidad.
✅ Eficiente: Sin duplicación de código ni funciones confusas.
Un código desordenado puede afectar la productividad y hacer que el mantenimiento sea un infierno. Veamos cómo evitarlo con principios clave y ejemplos en PHP.
🎯 1. Usa Nombres Significativos
Elige nombres descriptivos para variables, funciones y clases. Los nombres vagos o abreviaturas confusas dificultan la comprensión del código.
Mal ejemplo:
<?php
$u = "Juan Pérez";
$d = 20;
echo "El usuario $u tiene $d productos.";
Bien hecho:
<?php
$nombreUsuario = "Juan Pérez";
$cantidadProductos = 20;
echo "El usuario $nombreUsuario tiene $cantidadProductos productos.";
✅ Consejo: Evita abreviaturas y usa nombres que reflejen la intención de la variable.
✂️ 2. Mantén Funciones Pequeñas y Claras
Las funciones deben hacer una sola cosa y hacerla bien. Manténlas cortas y fáciles de entender.
Mal ejemplo: (una función que hace demasiado)
<?php
function procesarPedido($productos, $descuento) {
$total = 0;
foreach ($productos as $producto) {
$total += $producto['precio'];
}
if ($descuento) {
$total *= 0.9; // Aplica un 10% de descuento
}
echo "El total del pedido es: $total";
}
Bien hecho: (funciones separadas y específicas)
<?php
function calcularTotal(array $productos): float {
$total = array_sum(array_column($productos, 'precio'));
return $total;
}
function aplicarDescuento(float $total, float $descuento): float {
return $total * ((100 - $descuento) / 100);
}
function imprimirTotal(float $total): void {
echo "El total del pedido es: $total";
}
// Uso
$productos = [['precio' => 100], ['precio' => 50]];
$total = calcularTotal($productos);
$totalConDescuento = aplicarDescuento($total, 10);
imprimirTotal($totalConDescuento);
✅ Consejo: Cada función debe tener un propósito claro y específico.
🗒️ 3. Evita Comentarios Innecesarios
Un buen código se explica por sí mismo. Los comentarios solo deben usarse cuando agreguen valor.
Mal ejemplo:
<?php
// Suma los precios de los productos y devuelve el total
function calcularTotal($productos) {
$suma = 0;
foreach ($productos as $producto) {
$suma += $producto['precio']; // Añadir al total
}
return $suma;
}
Bien hecho: (elimina comentarios innecesarios y usa nombres claros)
<?php
function calcularTotal(array $productos): float {
return array_sum(array_column($productos, 'precio'));
}
✅ Consejo: Deja que el código se explique con nombres claros en lugar de comentarios.
🧩 4. Evita Códigos Duplicados (DRY)
DRY significa Don’t Repeat Yourself. Evita duplicar código creando funciones reutilizables.
Mal ejemplo:
<?php
$precioProducto1 = 100;
$precioProducto2 = 50;
$total = $precioProducto1 + $precioProducto2;
$totalConDescuento = $total * 0.9;
echo "Total: $totalConDescuento";
Bien hecho: (función reutilizable)
<?php
function calcularTotalConDescuento(array $productos, float $descuento): float {
$total = array_sum(array_column($productos, 'precio'));
return $total * ((100 - $descuento) / 100);
}
$productos = [['precio' => 100], ['precio' => 50]];
echo "Total: " . calcularTotalConDescuento($productos, 10);
✅ Consejo: Evita repetir lógica usando funciones reutilizables.
🎛️ 5. Principios SOLID en PHP
Los principios SOLID son una base fundamental para un código limpio y escalable. Aquí un resumen rápido:
- S: Single Responsibility Principle (SRP)
Cada clase debe tener una única razón para cambiar. - O: Open/Closed Principle (OCP)
El código debe estar abierto a extensión, pero cerrado a modificación. - L: Liskov Substitution Principle (LSP)
Las subclases deben poder reemplazar a sus clases base sin problemas. - I: Interface Segregation Principle (ISP)
Interfaces pequeñas y específicas, no una sola interfaz gigante. - D: Dependency Inversion Principle (DIP)
Depender de abstracciones, no implementaciones concretas.
Ejemplo en PHP: SRP y OCP:
<?php
class CalculadoraDeTotal {
public function calcular(array $productos): float {
return array_sum(array_column($productos, 'precio'));
}
}
class CalculadoraConDescuento {
public function calcularConDescuento(array $productos, float $descuento): float {
$total = (new CalculadoraDeTotal())->calcular($productos);
return $total * ((100 - $descuento) / 100);
}
}
// Uso:
$productos = [['precio' => 100], ['precio' => 50]];
$calculadora = new CalculadoraConDescuento();
echo "Total con descuento: " . $calculadora->calcularConDescuento($productos, 10);
✅ Consejo: Aplica los principios SOLID para un código más flexible y profesional.
Si quieres saber más sobre principios SOLID, te dejo este artículo dónde hablo más en profundidad sobre estos principios.
✅ Conclusión: ¿Por qué deberías aplicar Clean Code?
Aplicar los principios de Clean Code no es solo una cuestión de estética, sino una necesidad profesional. Un código limpio es:
- Más fácil de entender: Facilita la colaboración en equipo.
- Más mantenible: Reduce errores y facilita futuras modificaciones.
- Más profesional: Refleja tu experiencia y cuidado por la calidad del software.
💡 ¿El siguiente paso? Implementa estos consejos en tu próximo proyecto PHP. Y si quieres dominar aún más el tema, ¡te recomiendo leer Clean Code de Robert C. Martin!
🎯 ¿Te ha sido útil?
Si este artículo te ha ayudado, compártelo con tu equipo y empieza a escribir mejor código juntos. ¿Quieres más consejos como este? ¡Síguenos en @ArtesanosDelCodigo o suscribete a nuestra newsletter para estar informado tanto de los articulos del blog como de los episodios del podcast para más recursos sobre desarrollo! 🚀
Desarrollador de software con más de 7 años de experiencia, especializado en desarrollo web y backend. Con habilidades demostradas en PHP, Laravel, Symfony, y una amplia gama de tecnologías modernas. Apasionado por el diseño y desarrollo de software.