JavaScript mueve la web. Código bueno = web rápida y mantenible.
Error 1: Variables globales. Var en global scope. Riesgo: colisiones, bugs impredecibles. Solución: const/let siempre. Scope local. Namespaces si necesitas global.
Error 2: Callbacks anidados (callback hell). Código ilegible. Solución: Promises o async/await. Código lineal, fácil de leer.
Error 3: Falta de error handling. Código silenciosamente falla. Solución: try/catch, .catch() en promises, .finally() para cleanup.
Error 4: Memory leaks. Event listeners sin remover, timers sin limpiar. Solución: removeEventListener, clearInterval/clearTimeout en cleanup.
Error 5: Mutaciones inesperadas. Funciones que cambian objetos que no deberían. Solución: Inmutabilidad. Const, spread operator, Object.assign.
Patrones ganadores:
Módulos: cada archivo un responsabilidad. import/export.
Composición: pequeñas funciones que hacen una cosa bien. Combinables.
Defensive programming: valida inputs. "Defensive > Sorry after".
Tests: >80% coverage. Autoexcluyentes errores regresivos.
Linting: ESLint + Prettier. Código consistente, warnings automáticos.
Performance: - Debouncing: limita ejecución de eventos (búsqueda, resize) - Throttling: ejecuta máximo cada X ms - Lazy loading: carga código cuando necesario - Tree shaking: remove código no usado
En Leon Carpe Studios no vemos JavaScript como "rápido y sucio". Es un lenguaje serio cuando lo tratas seriamente.