Każdy lubi być architektem i pisać lepsze :) A potem my, biedne szaraki, zostajemy w projekcie z Własną Biblioteką Michała. Którego nie da się już o nic zapytać. Ani wyguglować w necie odpowiedzi, gdy pojawi się jakiś problem z "lepszym rozwiązaniem". Bo świat zewnętrzny na oczy go nie widział.
Gdzie ja napisałem, że w komercyjnym projekcie nie używam powszechnych rozwiązań? Bo zaznaczyłem coś przeciwnego. Że właśnie ze względu na łatwość i dostępność używam tych ze standardowych bibliotek, żeby nie mieszać za dużo.
Jeśli masz lepsze rozwiązanie niż ViewModels, to - jak to się mówi - "put your money where your mouth is", i wrzuć na GitHuba jako bibliotekę.
W przypadku ViewModel
i nie trzeba żadnej biblioteki. Ale rozumiem, że nie to jest celem pytania i powiedzmy, że zamienimy w tym wypadku na bibliotekę zastępującą fragmenty. Może i mógłbym. Pewnie by wyszło tak sobie ze względu na takie czynniki jak umiejętności, przypadki brzegowe, ilość czasu, ilość osób pracujących nad biblioteką i ją testujących. Nie wiem czego to ma dowodzić. W projektach niekomercyjnych, własnych albo krótkich (gdzie byłem sam) zawsze korzystałem z alternatywnych bibliotek, które mnie nie irytowały, albo pisałem własne rozwiązania.
Jeśli zaoferuje konkretne przewagi nad oficjalnym (a nie tylko będące kwestią prywatnego gustu), zostanie podchwycone.
To akurat, już słowem dygresji, nie wydaje mi się, żeby było prawdą.
Nieprawda. W szkieletowych przykładach może tak to wygląda, dla uproszczenia. Wystarczy jednak poczytać oficjalną dokumentację.
Nie szukając daleko, na dzień dobry na stronie https://developer.android.com/topic/libraries/architecture/viewmodel masz podlinkowany artykuł ViewModels and LiveData: Patterns + AntiPatterns, który omawia antywzorzec "Fat ViewModels", zalecając "moving some logic out to a presenter [...] adding a Domain layer", itd.
Google sam ułatwia złe rozwiązania. Dodanie cyklu życia do klasy, ułatwiony dostęp do zasobów systemowych w postaci AndroidViewModel
, rozszerzenia w postaci modułu SavedStateHandle
. Ja już pomijam patologie, że ktoś czyta bezpośrednio z bazy danych w ViewModel
u. Przykłady w praktyce:
Jedyna aplikacja, która robi rzeczy rozsądnie w ramach tej biblioteki to Tivi
. W pozostałych niektóre ViewModel
e wyglądają ok, bo mało w ogóle mogą robić. Niektóre zależą od frameworka. Niektóre robią milion rzeczy od dużej ilości logiki po zarządzanie wątkami.
Jeśli ktoś powie ci, że przygotowuje lepsze rozwiązanie niż X - a z rozmowy wynika, że nie przeczytał głównej strony dokumentacji do X, lub w każdym razie pisałby takie rzeczy jak ktoś, kto by jej nie przeczytał - to jaki byś powziął na ten temat pogląd? :) Serio pytam
Nie wiem czy chcesz mi tendencyjnie zarzucić, że piszę jakbym nie czytał dokumentacji. Ale odpowiadając - pewnie miałbym wątpliwości, co do takiej osoby.