Refactoring seguro
Tests primero, refactor después — siempre acotado
Refactoring seguro
Tests primero, refactor después — siempre acotado
Tests completos
Edge cases, errores y assertions específicas
Documentación técnica
OpenAPI, TSDoc y diagramas generados por el agente
Cultura de MR review
El Reviewer como primer filtro antes del merge
El agente como herramienta de refactoring sobre código legacy real. La estrategia es segura y acotada:
Añadir tests primero — antes de tocar nada, el agente genera tests del código actual
Refactor de un fichero a la vez — nunca refactors masivos sin supervisión
Revisión humana del diff — el dev valida cada cambio antes del commit
Casos prácticos sobre el código del equipo:
Refactoriza el componente UserListComponent:- Reemplaza los BehaviorSubject por signal()- Reemplaza los Observable derivados por computed()- Reemplaza las suscripciones en ngOnInit por effect()- Mantén la misma interfaz pública del componente- NO cambies los tests existentes — primero verifica que pasanEl método OrderController@store tiene 150 líneas con validación,lógica de negocio, envío de emails y logging mezclados.
Refactoriza:1. Extrae la validación a un StoreOrderRequest2. Extrae la lógica de negocio a OrderService3. Extrae el envío de emails a un Event/Listener4. El controller solo coordina — máximo 20 líneasEl fichero app/Services/PaymentService.php no tiene tests.Antes de cualquier cambio:1. Genera tests PHPUnit que cubran el comportamiento actual2. Ejecuta los tests — deben pasar SIN modificar el código3. Solo entonces propón el refactorEl agente genera la suite de tests completa. La clave: instruirle para que cubra edge cases, no solo el happy path.
Cómo instruir al agente para tests completos:
Genera tests para UserService.getById():- Happy path: usuario existe, devuelve datos completos- Error: usuario no existe → lanza NotFoundException- Error: ID inválido (null, undefined, negativo, string)- Edge: usuario existe pero tiene campos null (nombre, email)- Edge: múltiples llamadas concurrentes- Seguridad: no devuelve el password hash en la respuestaRevisión crítica del test generado — qué validar:
toBeTruthy)?Stack del equipo:
TestBed.configureTestingModuleDatabaseTransactionsEl agente no solo genera documentación — puede detectar documentación desactualizada y proponer actualizaciones.
Tipos de documentación a generar:
| Tipo | Herramienta | Dónde |
|---|---|---|
| API REST | OpenAPI/Swagger | Endpoints Laravel |
| Servicios Angular | JSDoc/TSDoc | Clases y métodos públicos |
| Componentes | README.md | Por componente o por feature |
| Arquitectura | Diagramas Mermaid | docs/ del repo |
Cómo integrarlo como tarea recurrente:
/actualizar-docs que el Reviewer ejecuta en cada pre-reviewEjemplo de prompt para OpenAPI:
Analiza todos los controllers en app/Http/Controllers/ y generaun fichero OpenAPI 3.0 en docs/api-spec.yaml.
Para cada endpoint incluye:- Path, método HTTP, parámetros- Request body (usando los Form Requests existentes)- Responses (200, 401, 403, 404, 422)- Descripción breve basada en los comentarios del controllerEl equipo no tiene cultura de revisión de Merge Requests. Esta sesión aborda dos cosas:
1. Por qué hacer review antes del merge No es burocracia. Es la forma más barata de:
2. Cómo el Reviewer elimina la fricción El Reviewer corre localmente antes de abrir el MR — genera un informe en segundos. No requiere cambiar el proceso en GitLab, solo añadir un paso previo que no cuesta:
código → push → MR → (nadie revisa) → mergecódigo → Reviewer → fix → push → MR → review humano ligero → mergeElegir un componente Angular con BehaviorSubject o un controller Laravel con lógica mezclada
Aplicar el proceso completo: tests primero (sin tocar el código) → ejecutar y verificar que pasan → refactor → ejecutar tests de nuevo
Generar una suite de tests completa para una función o servicio sin tests: happy path, al menos 3 casos de error, al menos 2 edge cases. Verificar que las assertions son específicas
Generar documentación OpenAPI 3.0 de al menos 3 endpoints Laravel
Ejecutar el Reviewer sobre los cambios y leer el informe: ¿detectó algo que no habías visto?
Medir: anotar tiempo invertido con agente vs estimación sin él — dato para la sesión de métricas