Hardcodear


¿Qué es hardcodear?

Hardcodear (del inglés hardcode) es incrustar un valor fijo directamente en el código fuente en lugar de almacenarlo en una variable, archivo de configuración, base de datos o variable de entorno. El valor queda “clavado” en el código y solo se puede cambiar editando el archivo.

¿Para qué sirve entenderlo?

Reconocer cuándo estás hardcodeando permite:

  • Escribir código más fácil de mantener y modificar.
  • Evitar tener que tocar el código fuente cada vez que cambia un dato de negocio.
  • Hacer que el proyecto funcione en distintos entornos (desarrollo, staging, producción) sin modificar archivos.
  • Reducir errores causados por copiar y pegar el mismo valor en varios sitios.
  • Facilitar la colaboración: otros desarrolladores pueden configurar el proyecto sin entender todos sus detalles internos.

¿Cómo se ve en la práctica?

// ❌ Hardcodeado: si cambia la URL, hay que buscarla en todo el proyecto
const respuesta = await fetch('https://api.miempresa.com/v2/usuarios');

// ✅ Correcto: la URL vive en la configuración
const respuesta = await fetch(`${process.env.API_URL}/usuarios`);
// ❌ Hardcodeado: el rol de administrador como string literal en 12 sitios
if (usuario.rol === 'admin') { ... }

// ✅ Correcto: una constante con nombre que explica su intención
const ROL_ADMIN = 'admin';
if (usuario.rol === ROL_ADMIN) { ... }
// ❌ Hardcodeado: IDs de base de datos en el código
const categoriaDestacada = await db.find({ _id: '64f3a2b1c8e9d10012345678' });

// ✅ Correcto: el ID viene de la configuración o de la propia base de datos
const categoriaDestacada = await db.find({ slug: 'destacada' });

¿Cuándo es (casi) aceptable?

No todo valor en el código es una mala práctica. Hay casos donde hardcodear es razonable:

  • Constantes matemáticas: Math.PI, 360, 1000 (milisegundos en un segundo)
  • Valores que por definición nunca cambian: const DIAS_SEMANA = 7
  • Prototipos o pruebas de concepto desechables

La clave es la intención: si ese valor podría cambiar alguna vez —o cambia según el entorno—, no debería estar hardcodeado.

El coste real

El problema del hardcode no es escribir la línea. Es encontrarla seis meses después cuando hay que cambiar la URL de producción, la clave de la API o el límite de reintentos, y darte cuenta de que ese valor aparece en 23 archivos distintos.

Cada valor hardcodeado es una pequeña deuda técnica. Sola no duele. Acumuladas, paralizan.