Files
wehub-resource-sync d48cda4081
CI / Test (ubuntu-latest, Node 18.x, bun) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, npm) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, pnpm) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 18.x, yarn) (push) Failing after 15m1s
CI / Test (ubuntu-latest, Node 20.x, bun) (push) Failing after 17m13s
CI / Test (ubuntu-latest, Node 20.x, npm) (push) Failing after 18m42s
CI / Test (ubuntu-latest, Node 20.x, pnpm) (push) Failing after 15m0s
CI / Test (ubuntu-latest, Node 20.x, yarn) (push) Failing after 49m44s
CI / Test (ubuntu-latest, Node 22.x, bun) (push) Failing after 51m55s
CI / Test (ubuntu-latest, Node 22.x, pnpm) (push) Failing after 21m57s
CI / Test (ubuntu-latest, Node 22.x, npm) (push) Failing after 37m39s
CI / Test (ubuntu-latest, Node 22.x, yarn) (push) Failing after 34m7s
CI / Validate Components (push) Failing after 37m15s
CI / Python Tests (push) Failing after 10m1s
CI / Security Scan (push) Failing after 10m1s
CI / Lint (push) Failing after 17m12s
CI / Coverage (push) Failing after 20m19s
CI / Test (macos-latest, Node 18.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 18.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 18.x, yarn) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 20.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 20.x, yarn) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, bun) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, npm) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, pnpm) (push) Has been cancelled
CI / Test (macos-latest, Node 22.x, yarn) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, npm) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, pnpm) (push) Has been cancelled
CI / Test (windows-latest, Node 22.x, yarn) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 11:55:55 +08:00

2.9 KiB

Estilo de Código

Inmutabilidad (CRÍTICO)

SIEMPRE crear objetos nuevos, NUNCA mutar los existentes:

// Pseudocódigo
INCORRECTO:  modify(original, campo, valor) → modifica original in-place
CORRECTO:    update(original, campo, valor) → retorna nueva copia con el cambio

Justificación: Los datos inmutables previenen efectos secundarios ocultos, facilitan la depuración y permiten concurrencia segura.

Principios Fundamentales

KISS (Keep It Simple)

  • Preferir la solución más simple que realmente funcione
  • Evitar optimización prematura
  • Optimizar para claridad, no para ingeniosidad

DRY (Don't Repeat Yourself)

  • Extraer lógica repetida en funciones o utilidades compartidas
  • Evitar la deriva por copiar y pegar implementaciones
  • Introducir abstracciones cuando la repetición es real, no especulativa

YAGNI (You Aren't Gonna Need It)

  • No construir features o abstracciones antes de que sean necesarias
  • Evitar generalidad especulativa
  • Comenzar simple, luego refactorizar cuando la presión es real

Organización de Archivos

MUCHOS ARCHIVOS PEQUEÑOS > POCOS ARCHIVOS GRANDES:

  • Alta cohesión, bajo acoplamiento
  • 200-400 líneas típico, 800 máximo
  • Extraer utilidades de módulos grandes
  • Organizar por feature/dominio, no por tipo

Manejo de Errores

SIEMPRE manejar errores de forma exhaustiva:

  • Manejar errores explícitamente en cada nivel
  • Proporcionar mensajes de error amigables en código orientado a la UI
  • Registrar contexto detallado del error en el lado del servidor
  • Nunca silenciar errores

Validación de Entrada

SIEMPRE validar en los límites del sistema:

  • Validar toda la entrada del usuario antes de procesarla
  • Usar validación basada en esquemas donde esté disponible
  • Fallar rápido con mensajes de error claros
  • Nunca confiar en datos externos (respuestas de API, entrada de usuario, contenido de archivos)

Convenciones de Nomenclatura

  • Variables y funciones: camelCase con nombres descriptivos
  • Booleanos: preferir prefijos is, has, should, o can
  • Interfaces, tipos y componentes: PascalCase
  • Constantes: UPPER_SNAKE_CASE
  • Custom hooks: camelCase con prefijo use

Code Smells a Evitar

Anidamiento Profundo

Preferir retornos anticipados sobre condicionales anidados cuando la lógica empieza a acumularse.

Números Mágicos

Usar constantes nombradas para umbrales, retrasos y límites significativos.

Funciones Largas

Dividir funciones grandes en piezas enfocadas con responsabilidades claras.

Lista de Verificación de Calidad de Código

Antes de marcar el trabajo como completo:

  • El código es legible y bien nombrado
  • Las funciones son pequeñas (<50 líneas)
  • Los archivos están enfocados (<800 líneas)
  • Sin anidamiento profundo (>4 niveles)
  • Manejo de errores apropiado
  • Sin valores hardcodeados (usar constantes o configuración)
  • Sin mutación (patrones inmutables usados)