🛠️ Recetas de Refactoring
Estas recetas te guían paso a paso para limpiar código acoplado o deuda técnica en el proyecto, siguiendo los estándares del manual sin necesidad de buscar técnicas externas.
Receta 1: Extraer un Custom Hook (React)
Problema: Un componente de UI tiene demasiada lógica de estado (fetching, formateo de datos, handlers complejos) mezclada con el renderizado.
Paso a paso:
- Crea un archivo nuevo (ej.
useUserDashboard.ts). - Mueve todos los
useState,useEffecty funciones helper a ese hook. - El hook debe retornar únicamente los datos que la UI necesita renderizar y las funciones que la UI necesita disparar (eventos).
- En el componente original, importa el hook:
const { data, loading, onSave } = useUserDashboard(userId).
Receta 2: Reemplazar Switches Largos por Diccionarios (Objects/Maps)
Problema: Una función tiene un switch gigante que devuelve diferentes íconos o configuraciones según un string, rompiendo el principio Abierto/Cerrado.
Paso a paso:
- Define un diccionario (Record en TS) fuera del ciclo de render:ts
const STATUS_CONFIG: Record<Status, { color: string, icon: IconType }> = { 'active': { color: 'green', icon: ActiveIcon }, 'pending': { color: 'yellow', icon: PendingIcon }, // ... } - Reemplaza el
switchpor una búsqueda directa en el objeto:const config = STATUS_CONFIG[status] ?? STATUS_CONFIG['default'].
Receta 3: Simplificar Workers Hinchados (Cloudflare)
Problema: Un archivo index.ts en un Worker de Cloudflare tiene 1000 líneas y maneja todo el enrutamiento y la lógica de negocio.
Paso a paso:
- Instala un enrutador ligero como Hono si no está en uso.
- Crea una carpeta
routes/y separa los endpoints por dominio (ej.routes/users.ts). - Crea una carpeta
services/y extrae la lógica de negocio pura, fuera del objetoRequestde HTTP. - En el
index.tssolo debe quedar la inicialización del enrutador y la vinculación de middlewares (CORS, Auth).