Когда я узнал о Redux, шаблон God-object (или anti-pattern) пришел мне на ум - оба имеют один большой объект, содержащий все данные приложения и методы для их манипулирования. Но Redux наложил некоторые ограничения, такие как сделать объект неизменным, а события - чистыми функциями, поддерживающими строгую подпись.
Таким образом, возник вопрос, использует ли Redux продезинфицированную версию объекта God? Или, как-то связано с тем, что Javascript не является классическим строго типизированным ООП?
DbContext
), но ее внутренние данные подразделяются на более мелкие части (таблицы, схемы).Ответы:
Что такое объект Бога? Из Википедии:
Хранилище Redux содержит только один объект данных и требует только 2 или 3 метода. В этом отношении трудно себе представить, что это объект Бога. Это определенно не «все знают».
Теперь, если ваш редуктор вообще не разбит, если вся логика находится в одной функции, тогда это может быть приемлемо, но просто разбить редуктор на несколько более мелких частей, чтобы избежать ситуации.
источник
ИМО, вышеупомянутого вопроса возникнуть не должно. Концепции функционального программирования не сопоставимы с концепциями в OOPS, это просто разные способы решения одной и той же проблемы.
источник
На первой странице совершенно ясно, что Redux решает проблему, характерную для одностраничных веб-приложений:
Поскольку требования к одностраничным приложениям JavaScript становятся все более сложными, наш код должен управлять большим количеством состояний, чем когда-либо прежде. (из Redux - Мотивация)
Мой собственный перевод - веб-приложения и платформы для создания веб-приложений грязны, и, поскольку они работают в браузере, они сталкиваются с уникальным набором проблем, которые просто не возникают вне веб-приложений.
Не поймите меня неправильно - я не говорю, что веб-приложения плохие или что фреймворки плохие. Просто веб-страницы и вся парадигма об этом, несомненно, никогда не были разработаны с учетом приложений. Некоторые веб-приложения работают на удивление хорошо - например, мне нравятся Google Docs, это лучше, чем нативные аналоги приложений.
Но Redux - это всего лишь инструмент для управления проблемами, возникающими, когда вам приходится сталкиваться с ограничениями и проблемами, возникающими при создании веб-приложений, работающих в браузере.
Для приложения iOS или любого другого приложения это не имеет смысла. Объектная модель легко обрабатывает асинхронные изменения и взаимодействие с пользователем. Вы всегда будете знать, что происходит. Рендеринг различных состояний не является проблемой и автоматизирован с помощью MVC и событий обновления.
Вы никогда не сталкивались с такой ситуацией, как веб-приложения.
** Если у вас плохая архитектура, то ничто не может вас спасти, даже Redux;)
источник