Saltar al contenido

Heurísticas Prácticas para Aplicar estos Principios

El checklist de preguntas — sobre complejidad, duplicación, responsabilidades, acoplamiento, contratos e interfaces — para usar al diseñar o revisar un componente real.

2 min. de lectura

Al diseñar o revisar un componente, estas preguntas ayudan a aplicar los principios generales y SOLID sin caer en la sobreingeniería.

Complejidad

  • ¿Esta abstracción es realmente necesaria?
  • ¿Podría implementar el requisito de forma más simple?
  • ¿El patrón usado resuelve un problema real o solo hace que el diseño parezca más sofisticado?

Duplicación

  • ¿El código duplicado representa realmente el mismo conocimiento?
  • ¿Estas piezas deberían evolucionar juntas?
  • ¿Eliminar la duplicación aumentaría el acoplamiento?

Requisitos futuros

  • ¿Esta funcionalidad hace falta realmente?
  • ¿Estamos resolviendo un problema conocido o uno hipotético?
  • ¿El costo de prepararlo ahora es menor que el costo esperado de cambiarlo después?

Responsabilidades

  • ¿Este componente tiene múltiples razones independientes para cambiar?
  • ¿Separarlas mejora realmente la cohesión o solo agrega indirección?

Acoplamiento

  • ¿Este componente depende de detalles internos de otro?
  • ¿La composición podría hacer más explícita esa dependencia?
  • ¿Estamos navegando un grafo de objetos que debería estar encapsulado?

Contratos y sustitución

  • ¿Puedo reemplazar esta implementación por otra sin que el caller lo note?
  • ¿Esta implementación exige más de lo que el contrato promete, o entrega menos?

Interfaces

  • ¿Los consumidores de esta interfaz usan realmente todos sus métodos?
  • ¿Existen implementaciones que lanzan excepciones en métodos que no les corresponden?

Dirección de dependencias

  • ¿La lógica de negocio depende de un detalle de infraestructura concreto?
  • ¿Podría invertir esa dependencia sin introducir una abstracción prematura?

Ninguna de estas preguntas tiene una respuesta universal — el objetivo no es marcar todos los casilleros, sino tener el vocabulario para justificar una decisión de diseño y reconocer cuándo una abstracción está resolviendo un problema real y cuándo solo está ahí porque “es lo que corresponde”.

Te sirvió, compartilo

// ¿te sirvió?
// compartilo