Mientras aprendía sobre Redux, me vino a la mente el patrón del objeto de Dios (o antipatrón): ambos tienen un solo objeto grande que contiene todos los datos y métodos de la aplicación para manipularlos. Pero Redux ha impuesto algunas restricciones, como hacer que el Objeto sea inmutable y que los eventos sean funciones puras, manteniendo una firma estricta.
Entonces surgió la pregunta: ¿Redux está usando una versión desinfectada del objeto de Dios? O, ¿hay algo que ver con que Javascript no sea OOP fuertemente tipado clásico?
DbContext
) pero sus datos internos se subdividen en partes más pequeñas (tablas, esquemas).Respuestas:
¿Qué es un objeto de Dios? De Wikipedia:
La tienda Redux solo contiene un objeto de datos y solo requiere 2 o 3 métodos. A este respecto, es difícil imaginar pensarlo como un objeto de Dios. Definitivamente no es "todo lo sabe".
Ahora, si su reductor no está dividido en absoluto, si toda la lógica está en una función, entonces eso podría calificar, pero es una cuestión simple dividir el reductor en un montón de piezas más pequeñas para evitar la situación.
fuente
OMI, la pregunta anterior no debería surgir. Los conceptos de programación funcional no son comparables a los conceptos en OOPS, son solo formas diferentes de resolver el mismo problema.
fuente
La primera página deja en claro que Redux resuelve un problema específico de las aplicaciones web de una sola página:
Como los requisitos para las aplicaciones JavaScript de una sola página se han vuelto cada vez más complicados, nuestro código debe administrar más estado que nunca. (de Redux - Motivación)
Mi propia traducción es: las aplicaciones web y los marcos para crear aplicaciones web son desordenados y, como se ejecutan en un navegador, se enfrentan a un conjunto único de problemas que simplemente no surgen fuera de las aplicaciones web.
No me malinterpreten: no estoy diciendo que las aplicaciones web sean malas o que los marcos sean malos. Es solo que las páginas web y el paradigma completo sobre él nunca se diseñaron con aplicaciones en mente. Algunas aplicaciones web funcionan notablemente bien. Me encanta Google Docs, por ejemplo, es mejor que los equivalentes de aplicaciones nativas.
Pero Redux es solo una herramienta para gestionar los problemas que surgen cuando tienes que lidiar con las limitaciones y los problemas que surgen de la creación de aplicaciones web que se ejecutan en un navegador.
Para una aplicación iOS, o una aplicación nativa de cualquier tipo, no tiene sentido. El modelo de objetos maneja los cambios asíncronos y la interacción del usuario con facilidad. Siempre sabrás lo que está pasando. Renderizar diferentes estados no es un problema y está automatizado con MVC y eventos de actualización.
Nunca te enfrentas a una situación como las aplicaciones web.
** Si su arquitectura es mala, entonces nada puede salvarlo, ni siquiera Redux;)
fuente