Podczas uczenia się o Redux, przyszedł mi do głowy wzorzec Bóg-obiekt (lub anty-wzór) - oba mają jeden duży obiekt zawierający wszystkie dane aplikacji i metody ich manipulowania. Ale Redux wprowadził pewne ograniczenia, takie jak uczynienie Object niezmiennym i zdarzeń czystymi funkcjami utrzymującymi ścisłą sygnaturę.
Pojawiło się więc pytanie, czy Redux używa zdezynfekowanej wersji obiektu Boga? A może jest coś wspólnego z tym, że JavaScript nie jest klasycznym silnie napisanym OOP?
DbContext
), ale jej dane wewnętrzne są podzielone na mniejsze części (tabele, schematy).Odpowiedzi:
Co to jest obiekt Boga? Z Wikipedii:
Magazyn Redux zawiera tylko jeden obiekt danych i wymaga tylko 2 lub 3 metod. Pod tym względem trudno wyobrazić sobie myślenie o nim jako o przedmiocie Boga. Zdecydowanie nie jest to „cała wiedza”.
Teraz, czy reduktor nie jest uszkodzony w ogóle, jeśli cała logika jest w jednej funkcji, a następnie , że może kwalifikować ale jest to prosta sprawa, aby rozbić reduktor pod bandą mniejsze kawałki, aby uniknąć sytuacji.
źródło
IMO, powyższe pytanie nie powinno powstać. Koncepcje programowania funkcjonalnego nie są porównywalne z koncepcjami w OOPS, są to po prostu różne sposoby rozwiązania tego samego problemu.
źródło
Pierwsza strona wyraźnie pokazuje, że Redux rozwiązuje problem specyficzny dla aplikacji internetowych z jedną stroną:
Ponieważ wymagania dotyczące aplikacji jednostronicowych JavaScript stają się coraz bardziej skomplikowane, nasz kod musi zarządzać większą liczbą stanów niż kiedykolwiek wcześniej. (z Redux - Motywacja)
Moje własne tłumaczenie brzmi - aplikacje internetowe i ramy tworzenia aplikacji internetowych są niechlujne, a ponieważ działają w przeglądarce, mają do czynienia z unikalnym zestawem problemów, które po prostu nie pojawiają się poza aplikacjami internetowymi.
Nie zrozumcie mnie źle - nie mówię, że aplikacje internetowe są złe lub że frameworki są złe. Chodzi o to, że strony internetowe i cały ten paradygmat o nim niezaprzeczalnie nigdy nie zostały zaprojektowane z myślą o aplikacjach. Niektóre aplikacje internetowe działają wyjątkowo dobrze - na przykład uwielbiam Dokumenty Google, są lepsze niż odpowiedniki aplikacji natywnych.
Ale Redux to tylko narzędzie do zarządzania problemami, które powstają, gdy trzeba poradzić sobie z ograniczeniami i problemami wynikającymi z tworzenia aplikacji internetowych działających w przeglądarce.
W przypadku aplikacji na system iOS lub natywnej aplikacji nie ma to sensu. Model obiektowy z łatwością obsługuje zmiany asynchroniczne i interakcję użytkownika. Zawsze będziesz wiedział, co się dzieje. Renderowanie różnych stanów nie stanowi problemu i jest zautomatyzowane za pomocą MVC i aktualizacji zdarzeń.
Nigdy nie masz do czynienia z sytuacją taką jak aplikacje internetowe.
** Jeśli twoja architektura jest zła, to dobrze, nic cię nie uratuje, nawet Redux;)
źródło