Errores Comunes al Manejar la Lógica de Dominio en Sistemas de Información

Clase 11 de 24Curso de Arquitecturas Limpias para Desarrollo de Software

Resumen

¿Por qué es fundamental el dominio en el desarrollo de sistemas?

El dominio es el corazón de cualquier sistema. Se podría decir que es la razón misma de su existencia ya que encapsula la lógica de negocio. Es el área en la que despliega sus verdaderas funcionalidades y donde se deciden las actividades esenciales, como calcular descuentos o verificar inventarios, aplicables independientemente de las tecnologías empleadas. A través de este módulo, nos enfocaremos en proteger y estructurar este componente vital.

¿Qué prácticas deben evitarse al trabajar con dominios?

Mantener el dominio libre de referencias externas garantiza su solidez. A continuación, se presentan errores comunes que se deben evitar:

  • Referencias directas a capas externas: Evitar "importar" elementos externos directamente al dominio.
// Código incorrecto
import { EmailService } from 'external-layer'

class DomainService {
    sendEmail() {
        EmailService.send();
    }
}
  • Uso de terminología externa: El nombrar elementos en el dominio con terminología de infraestructura puede vulnerarlo.
// Código incorrecto
function notificarUsuario() {
    const enviarSMS = true; // Supone la utilización de SMS, detalle que pertenece a infraestructura
}
  • Retorno de datos específicos de interfaz: No devolver datos en formatos ligados a interfaces como HTML. Deberíamos devolver datos en formatos más universales como booleanos o enumeraciones.

  • Filtración de lógica de negocio hacia la interfaz: Validaciones específicas de negocio deben residir en el dominio para asegurar la reutilización y evitar dependencias directas con la capa de presentación.

¿Cómo podemos organizar efectivamente el dominio?

Existen múltiples aproximaciones para organizar el dominio, cada una con sus propias características y aplicaciones. Aquí algunas metodologías listas para explorar más adelante:

  1. Script de transacción: Una técnica clásica que permite agrupar las instrucciones necesarias para completar una transacción de negocio.

  2. Modelos de dominio orientados a objetos: Aprovechan las ventajas del paradigma orientado a objetos, permitiendo una representación robusta del dominio.

  3. Capa de servicios: Funciona como un complemento al modelo de dominio, facilitando la ejecución de operaciones más complejas con el sistema.

  4. Casos de uso: Estructuran funcionalidades de dominio enfocándose en escenarios específicos, proporcionando una vista clara sobre las operaciones que se realizan en el sistema.

  5. CQRS (Command Query Responsibility Segregation): Separa las responsabilidades de consulta y comando del sistema, adaptándose a arquitecturas limpias.

Explorar y comprender estas diferentes formas de organizar el dominio garantiza que mantengamos la lógica de negocio encapsulada de manera efectiva, asegurando la escalabilidad y cohesión del sistema.

La organización adecuada del dominio no solo mejora la eficiencia sino que también fomenta la adaptación y evolución del sistema a medida que cambian las necesidades del negocio. Así que, ¡continúa profundizando en estas técnicas y mantén tu dominio sólido y estructurado!