A01 — Monolithic Eloquent
Uso directo del ORM con lógica de negocio en modelos y controladores
Patrón: Active Record / Monolito
Filosofía: Abraza el ORM como abstracción principal. Iteración rápida, mínimo boilerplate.
Descripción
A01 utiliza los modelos Laravel Eloquent directamente en la capa del controlador. La lógica de negocio reside en métodos del modelo y acciones del controlador. Este enfoque prioriza el desarrollo rápido sobre el mantenimiento a largo plazo.
Fortalezas:
- Configuración mínima; empieza a codificar inmediatamente
- Aprovecha el query builder expresivo de Eloquent
- Rápido para añadir lógica de negocio simple
- Sin overhead de abstracción
Debilidades:
- Acoplamiento estrecho con la capa de base de datos
- Lógica dispersa entre modelos y controladores
- Difícil de testear sin una base de datos
- La complejidad crece exponencialmente con reglas de dominio
- Reglas de negocio hardcodeadas son frágiles
Evolución a través de Fases
| Fase | Archivos | Líneas de Código | Controlador (líneas) |
|---|---|---|---|
| Fase 01 | 6 | 218 | 83 |
| Fase 02 | 6 | 326 | 123 |
| Fase 03 | 6 | 398 | 141 |
| Fase 04 | 7 | 466 | 184 |
Advertencia: El controlador creció 122% (83 → 184 líneas). Toda la complejidad concentrada en un único método manejando 13 responsabilidades distintas.
Métricas Clave
Total de Archivos
7
Sin crecimiento entre fases
Total de Líneas de Código
466
+114% crecimiento P01→P04
Tamaño del Controlador (Fase 04)
184 líneas
+101 líneas desde Fase 01
Puntuación de Testeabilidad
Baja
Requiere mocking de base de datos
Conclusión
La simplicidad tiene un coste exponencial.
A01 es el más rápido para empezar pero se vuelve inmanejable a medida que crece la complejidad del dominio. El controlador maneja múltiples responsabilidades con lógica de negocio hardcodeada. Los descuentos de early booking se parsean usando manipulación de strings (str_starts_with + explode), creando código frágil y difícil de mantener.
En la Fase 04, el único método del controlador se ha vuelto imposible de testear de forma aislada, y añadir nuevas reglas de precio requiere modificaciones cuidadosas para evitar romper la lógica existente.
✓ Cuándo usar A01
- Prototipo o prueba de concepto con lógica estable y simple
- Desarrollador único, equipo pequeño, timeline corto de proyecto
- Cuando estás seguro de que la complejidad del dominio no crecerá significativamente