XState

Loose Coupling, High Cohesion

(Bajo Acoplamiento, Alta Cohesión)

  • Componentes Independientes
  • Mas fácil comprender
  • Menos Cambios = Menos "Bugs"
  • SOLID
    • Single Responsibility (Responsabilidad Unica)
    • Open/Closed (Abierto/Cerrado)
    • Liskov Substitution (Sustitución de Liskov)
    • Interface Segregation (Segregación de la Interfaz)
    • Dependency Inversion (Inversión de la Dependencia)
  • Flujo de Datos vs Flujo de Control

Flujo de Control

Flujo de Datos

Flux

  • https://facebook.github.io/flux/
  • Plantilla para gestionar el flujo de datos
  • Los datos fluyen en una direccion!
    • Mas fácil comprender y debug porque sabemos de donde vienen los datos.
    • Menos bugs, porque hay mas control de los datos y como se cambian.
    • Mas Eficaz, porque es solo necesario actualizar componentes del sistema que dependen en los datos que han cambiado.

Flux

  • Un view es una representacion de los datos que existen en un sistema.
  • Un view se actualiza cuando hay un cambio de los datos.
  • Los datos solo se cambian en respuesta a una accion (o evento).
  • Los views pueden actualizar los datos solo atraves de una accion.
  • Un view solo puede cambiar los datos directamente de los views hijos, nunca de los padres, ni de los hermanos.

Flux Diagrama

Redux

  • Una implementación de Flux
  • Dispatch
  • Actions
  • Reducers
  • Stores
  • connect() o useSelector en React
  • Problemas:
    • "Boilerplate"
    • Tiendas pueden volverse muy desestructuradas
    • Codigo extendido por muchos archivos (baja cohesion)

XState

  • https://xstate.js.org/docs/
  • Autómata Finito o Maquina de Estado Finito
    • Límite de estados finito
    • Límite de eventos finito
    • Pasa de un estado a otro atraves de eventos
    • Solo puede estar en un estado
  • Una implementación de Flux
    • Recibe eventos (Accionés) a traves del send() (Despachador), y puede actualizar su contexto (Tienda).
    • Todo organizado dentro de la definición de la maquina
    • Maquinas pueden invocar otras maquinas

deck

By Jared Stark

deck

  • 251