Tema 11 · Refactor

11. Refactorización Limpia: De Código Espagueti a Principios SOLID

Utiliza la IA para descomponer funciones monolíticas, aplicar buenas prácticas y modernizar bases de código heredadas sin romper funcionalidad.

La Regla de Oro de la Refactorización Asistida por IA

Refactorizar significa alterar la estructura interna del código de software sin modificar en absoluto su comportamiento observable externo.

El mayor peligro al pedirle a una IA que "mejore" un archivo es que el modelo tienda a sobre-ingeniar: inventar nuevas dependencias, cambiar nombres de endpoints públicos o asumir funcionalidades que rompen el frontend.

📌 Principio de Contención: Exige siempre a la IA: "Preserva intacta la firma pública del método y los nombres de las variables de retorno. Tu único objetivo es simplificar la lógica interna, reducir la anidación y extraer responsabilidades."

Tácticas de Refactorización Efectivas con Copiloto

  • Cláusulas de Guarda (Early Return): Eliminar la "pirámide de la perdición" (anidamientos profundos de if...else).
  • Principio de Responsabilidad Única (SRP): Descomponer funciones "monstruo" de 200 líneas en métodos pequeños y descriptivos.
  • Modernización de Sintaxis: Sustituir viejos switch por expresiones match en PHP 8+, o reemplazar bucles manuales con métodos declarativos (map, filter, reduce) en JavaScript.

⚡ Prompt Quirúrgico para Refactorizar una Función Monolítica

Instrucción paso a paso para limpiar un controlador heredado sin alterar su interfaz externa ni romper las vistas que lo consumen.

refactor-prompt.md
Solo lectura
# Solicitud de Refactorización Estricta (Kilopolis)

Quiero refactorizar la siguiente función de registro de usuarios en PHP:

```php
function registrar($data) {
    if (isset($data['email'])) {
        if (filter_var($data['email'], FILTER_VALIDATE_EMAIL)) {
            if (isset($data['password']) && strlen($data['password']) >= 8) {
                // ... 50 líneas más de ifs anidados y llamadas a base de datos
            } else {
                return ['error' => 'Password muy corta'];
            }
        } else {
            return ['error' => 'Email no valido'];
        }
    } else {
        return ['error' => 'Falta email'];
    }
}
```

## INSTRUCCIONES DE REFACTORIZACIÓN:
1. **Preserva la firma:** La función debe seguir llamándose `registrar(array $data): array`.
2. **Aplica Cláusulas de Guarda (Early Return):** Invierte las condiciones de error para retornar de inmediato, eliminando todos los `else` innecesarios.
3. **Añade Tipado Estricto de PHP 8.3:** Usa tipos en parámetros y retorno.
4. **Extrae responsabilidades:** Si hay hash de contraseñas o inserción en base de datos, sepáralo en métodos privados pequeños y legibles.
5. **No inventes frameworks:** Usa PDO estándar.
🧠
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección
1 Pregunta
Pregunta 1
¿Cuál es el principal riesgo al solicitarle a una IA: "Mejora y optimiza este archivo de código" sin darle restricciones específicas?
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar IA como Copiloto: Aprendizaje & Desarrollo Web y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.