Medir el puente, y cuándo no cruzarlo
Cierre de la fase III: el presupuesto de cruces de una interacción, cómo se mide en tu aplicación, y la lista de decisiones que la fase deja tomadas.
El presupuesto
Una interacción de usuario —un clic, una tecla, abrir una pantalla— tiene un presupuesto razonable, y ponerle número convierte una intuición en algo comprobable:
La fila que más sorprende es la de reposo: una aplicación quieta debería cruzar cero veces. Si el contador sube con la aplicación abierta y nadie tocándola, hay un sondeo.
Medirlo de verdad
No hace falta nada elaborado. Un contador en el frontend, envuelto alrededor de tu módulo del puente —el del nivel 6.1— y una tecla que lo imprima:
// lib/puente.ts — el envoltorio que ya tenías, ahora contandolet cruces = 0;const porComando = new Map<string, number>();export async function llamar<T>(nombre: string, fn: () => Promise<T>): Promise<T> { cruces++; porComando.set(nombre, (porComando.get(nombre) ?? 0) + 1); return fn();}export function informe() { console.table([...porComando].sort((a, b) => b[1] - a[1])); console.log('total:', cruces);}Y el procedimiento, que cabe en diez minutos:
- Abre la aplicación y no toques nada durante un minuto. Imprime. Debería ser cero. Lo que salga aquí es sondeo.
- Haz el recorrido principal una vez. Imprime. Compara con el presupuesto de arriba.
- Ordena por comando. El que más aparece es el primer candidato a agrupar o a convertirse en evento.
Ese informe suele dar una sorpresa a la primera, y casi siempre es un comando que alguien puso dentro de un render.
Las correcciones, por rentabilidad
Si te pasas del presupuesto, en este orden: