Właśnie zaczynam od RxJava , implementacji Java ReactiveX (znanej również jako Rx i Reactive Extensions ). Coś, co naprawdę uderzyło mnie był ogromny rozmiar RxJava w płynnej klasy : ma 460 sposobów!
Aby być uczciwym:
Istnieje wiele metod, które są przeciążone, co znacznie zwiększa całkowitą liczbę metod.
Być może ta klasa powinna zostać zerwana, ale moja wiedza i rozumienie RxJava jest bardzo ograniczone. Ludzie, którzy stworzyli RxJava, są z pewnością bardzo sprytni i prawdopodobnie mogą przedstawić uzasadnione argumenty przemawiające za stworzeniem Flowalnego przy użyciu tak wielu metod.
Z drugiej strony:
RxJava to implementacja Java Reactive Extensions firmy Microsoft , która nie ma nawet klasy Flowable , więc nie jest to przypadek ślepego przenoszenia istniejącej klasy i implementacji jej w Javie.
[ Aktualizacja: Dotychczasowy punkt kursywą jest niezgodny ze stanem faktycznym: Microsoft Obserwowalne klasa, która ma ponad 400 metod, został użyty jako podstawa do RxJava za obserwowalne klasy i płynny jest podobna do Obserwowalne ale uchwyty Backpressure dla dużych ilości danych. Więc zespołu RxJava były przeniesieniem istniejącej klasy. Ten post powinien być wyzwaniem oryginalną konstrukcję obserwowalnych klasie przez Microsoft zamiast RxJava w płynnej klasie.]
RxJava ma niewiele ponad 3 lata, więc nie jest to przykład błędnego zaprojektowania kodu z powodu braku wiedzy na temat dobrych ( SOLID ) zasad projektowania klas (tak jak miało to miejsce we wczesnych wersjach Javy).
Dla klasy tak dużej jak Flowble jej konstrukcja wydaje się z natury niewłaściwa, ale może nie; jedna odpowiedź na to pytanie SE Jakie jest ograniczenie liczby metod klasowych? zasugerował, że odpowiedź brzmi „ Stosuj tyle metod, ile potrzebujesz ”.
Oczywiście są pewne klasy, które zgodnie z prawem potrzebują sporej liczby metod do ich obsługi bez względu na język, ponieważ nie rozpadają się one na nic mniejszego i mają spore liczby cech i atrybutów. Na przykład: ciągi, kolory, komórki arkusza kalkulacyjnego, zestawy wyników bazy danych i żądania HTTP. Posiadanie może kilkudziesięciu metod reprezentowania tych klas przez klasy nie wydaje się nierozsądne.
Ale czy Flowable naprawdę potrzebuje 460 metod, czy też jest tak ogromny, że jest koniecznie przykładem złej klasy projektu?
[Żeby było jasne: to pytanie dotyczy w szczególności RxJava w płynnej klasy zamiast obiektów Boga w ogóle.]