Я только начинаю с RxJava , Java-реализации ReactiveX (также известной как Rx и Reactive Extensions ). То , что действительно поразило меня массовый размер RxJava в текучий классе : он имеет 460 методы!
По честному:
Есть много методов, которые перегружены, что значительно увеличивает общее количество методов.
Возможно, этот класс следует разбить, но мои знания и понимание RxJava очень ограничены. Люди, которые создали RxJava, безусловно, очень умны, и они, вероятно, могут предложить веские аргументы для выбора создания Flowable с таким количеством методов.
С другой стороны:
RxJava - это Java-реализация Microsoft Reactive Extensions , которая даже не имеет класса Flowable , так что это не случай слепой портирования существующего класса и его реализации в Java.
[ Обновление: предыдущий пункт в курсиве фактически неверен: класс Observable от Microsoft , который имеет более 400 методов, использовался в качестве основы для класса Observable в RxJava , а Flowable аналогичен Observable, но обрабатывает противодавление для больших объемов данных. Таким образом, команда RxJava были портирование существующего класса. Этот пост должен был оспорить оригинальный дизайн наблюдаемого класса по Microsoft , а не RxJava в текучем классе.]
RxJava всего немногим более 3 лет, так что это не пример неправильного проектирования кода из-за недостатка знаний о хороших ( SOLID ) принципах проектирования классов (как это было в ранних выпусках Java).
Для такого большого класса, как Flowable, его дизайн кажется неправильным, но, возможно, нет; один ответ на этот вопрос SE Каково ограничение на количество методов класса? предположил, что ответ « есть столько методов, сколько вам нужно ».
Очевидно, что есть некоторые классы, которым на законных основаниях требуется достаточное количество методов для их поддержки независимо от языка, потому что они не разбиваются на что-то меньшее и имеют достаточное количество характеристик и атрибутов. Например: строки, цвета, ячейки электронной таблицы, наборы результатов базы данных и HTTP-запросы. Возможно, наличие нескольких десятков методов для классов, представляющих эти вещи, не кажется необоснованным.
Но действительно ли Flowable нужны 460 методов, или он настолько велик, что обязательно является примером плохого дизайна класса?
[Чтобы быть ясно: этот вопрос конкретно относится к RxJava в текучий класса , а не объекты Бога вообще.]