Píldora 012 min de lectura← desliza para cambiar →

Keep It Simple, Stupid (KISS)

Resolver lo complejo sin complicarlo más

KISS (Keep It Simple, Stupid) propone usar la solución más sencilla que resuelva el problema de verdad. Simple no significa ignorar su complejidad, sino evitar añadir la que no hace falta.

Imaginemos una cadena de tiendas que importa el inventario de sus proveedores. Es el sistema que veremos crecer a lo largo de la serie.

Mes 1: un proveedor, una función

Llega un único proveedor que envía su inventario en JSON. Una función lo lee y devuelve registros de inventario. No hace falta más.

Mes 3: otro if

Llegan más proveedores, cada uno con su propia estructura. Lo rápido es añadir una rama:

if (supplier === 'north') { code = item.code; }
else if (supplier === 'south') { code = item.product.sku; }
// ...y un if más por cada proveedor nuevo

Cada if parece la opción simple. La lógica de lectura acaba copiada en los cron jobs que importan stock, concilian y exportan.

Mes 6: un proveedor renombra un campo

Un proveedor cambia code por sku. Se actualizan dos cron jobs; el tercero sigue buscando code, recibe undefined y carga productos sin código. El proceso termina sin avisar.

La variación entre proveedores es complejidad inherente: viene con el problema. Duplicar la lógica de lectura en varios procesos es complejidad añadida: la hemos puesto nosotros.

La decisión: un lector por formato

interface InventoryReader {
  read(file: InventoryFile): InventoryRecord[];
}

Cada estructura tiene su lector y los tres cron jobs lo reutilizan. Cuando un proveedor cambia su formato, tocas un lector y sus pruebas.

Lo que cuesta: una interfaz y un lector por formato. Un motor configurable o un sistema de plugins añadiría más piezas que mantener. Puede compensar si necesitas incorporar formatos sin desplegar.

Un if puede ser suficiente. Aquí, separar los lectores simplifica el cambio: cada formato se interpreta en un solo sitio.

Los formatos ya se leen en un solo sitio. Ahora cada lector también aplica las reglas del inventario.