¿Cuál es la diferencia entre el estado de una interfaz y la lógica de negocio?
El estado de una interfaz describe lo que la interfaz necesita representar en un momento determinado. La lógica de negocio define las reglas que determinan si una operación es válida, qué consecuencias tiene y cómo debe comportarse el sistema.
Ambas cosas están relacionadas, pero no representan la misma responsabilidad.
¿Qué es el estado de una interfaz?
Una interfaz puede estar cargando información, mostrando un error, conservando un filtro seleccionado, manteniendo un formulario parcialmente completo o indicando que una operación espera confirmación.
Esas condiciones ayudan a determinar qué debe mostrarse, habilitarse o deshabilitarse en pantalla. Un framework de frontend puede proporcionar herramientas para almacenar y reaccionar ante esos cambios, pero el estado únicamente describe la condición actual de la interfaz.
¿Qué es la lógica de negocio?
La lógica de negocio define las reglas que existen detrás de una operación. Puede determinar quién puede modificar un registro, qué valores se aceptan, cómo se calcula un precio, si un pedido puede cancelarse o qué versión de un registro puede actualizarse.
Estas reglas necesitan conservar su validez independientemente de la pantalla utilizada para ejecutar la operación. Un sitio web, una aplicación móvil u otro cliente deberían recibir el mismo resultado cuando intentan realizar la misma acción bajo las mismas condiciones.
Un estado no explica por qué existe
Términos como pendiente, sincronizado, rechazado o conflicto pueden describir estados útiles dentro de una interfaz. Sin embargo, asignar uno de esos valores no resuelve por sí mismo el problema que existe debajo.
Si una operación se marca como conflicto, el sistema todavía necesita saber qué registros o versiones están compitiendo, qué cambio se intentó realizar y qué regla determina lo que puede ocurrir después.
El estado comunica el resultado. Las reglas de negocio explican por qué existe ese resultado.
¿Por qué conviene separar estas responsabilidades?
Cuando las reglas de negocio existen únicamente dentro de componentes de interfaz, otro cliente puede necesitar reproducirlas por separado. Esto puede generar comportamientos inconsistentes y volver más difícil el mantenimiento de los cambios.
Mantener las reglas en la capa de dominio o servidor que corresponda permite que la interfaz se concentre en presentar información, recibir acciones del usuario y representar el resultado que producen esas reglas.
El frontend también puede contener lógica
Separar la lógica de negocio no significa que el frontend deba carecer de lógica. La interfaz todavía necesita validaciones para mejorar la experiencia, formatos, navegación, cálculos locales, condiciones de visibilidad y reglas temporales de interacción.
La diferencia está en identificar si una regla define el significado y la validez de la operación de negocio o solamente la forma en que esa operación se presenta y facilita dentro de una pantalla determinada.
¿Cómo se relacionan el contrato y el estado de la interfaz?
El contrato de datos puede definir las operaciones, identificadores, versiones, permisos y respuestas compartidas entre frontend y backend. La interfaz puede después convertir esas respuestas en estados comprensibles para el usuario.
Por ejemplo, el servidor puede rechazar una actualización porque cambió la versión del registro. La interfaz puede representar ese resultado como un conflicto y ofrecer una acción adecuada, pero no debería inventar la regla de concurrencia que existe debajo.
El estado de la interfaz representa lo que está ocurriendo. La lógica de negocio determina qué puede ocurrir y por qué.
Mantener clara esta separación ayuda a que una aplicación conserve un comportamiento consistente incluso cuando el mismo backend atiende distintas interfaces, dispositivos o tecnologías.