Я тільки починаю роботу з RxJava , реалізацією Java ReactiveX (також відомим як Rx і Reactive Extensions ). Те , що дійсно вразило мене масовий розмір RxJava в текучий класі : він має 460 методи!
Справедливості:
Існує маса перевантажених методів, що значно зменшує загальну кількість методів.
Можливо, цей клас слід розбити, але мої знання та розуміння RxJava дуже обмежені. Люди, які створили RxJava, безумовно, дуже розумні, і вони, імовірно, можуть запропонувати вагомі аргументи для вибору створити Flowable з такою кількістю методів.
З іншої сторони:
RxJava - це реалізація Java на реактивних розширеннях Microsoft , яка навіть не має класу Flowable , тому це не випадок сліпого перенесення існуючого класу та впровадження його в Java.
[ Оновлення: Попередній пункт у курсиві фактично невірний: клас спостереження Microsoft , який налічує понад 400 методів, був використаний як основа для класу спостереження RxJava , і Flowable схожий на спостерігається, але обробляє зворотний тиск для великих обсягів даних. Таким чином, команда RxJava були портирование існуючого класу. Цей пост повинен був оскаржити оригінальний дизайн спостережуваного класу по Microsoft , а не RxJava в текучому класі.]
RxJava лише трохи більше 3-х років, тому це не приклад неправильного проектування коду через відсутність знань про хороші принципи дизайну класів ( SOLID ) (як це було у ранніх версіях Java).
Для класу, великого як Flowable його дизайн здається неправильним, але, можливо, ні; одна відповідь на це питання SE Що обмежує кількість методів класу? запропонував відповідь " Майте стільки методів, скільки вам потрібно ".
Зрозуміло, що є деякі класи, які легітимно потребують достатньої кількості методів для їх підтримки незалежно від мови, оскільки вони не легко розбиваються на щось менше і мають неабияку кількість характеристик та ознак. Наприклад: рядки, кольори, комірки електронних таблиць, набори результатів бази даних та HTTP-запити. Маючи, можливо, кілька десятків методів для занять для представлення цих речей, не здається безпідставним.
Але робить потрібні Flowable справді 460 методів, чи він настільки величезний, що це обов'язково зразок поганого дизайну класу?
[Щоб бути зрозумілим: це питання стосується конкретно класу Flowable RxJava, а не предметів Бога взагалі.]