我刚刚开始使用RxJava,它是Java对ReactiveX的实现 (也称为Rx和Reactive Extensions)。一些真正让我吃惊的庞大规模RxJava的可流动类:它具有460点的方法!
公平起见:
有很多方法被重载,这大大增加了方法的总数。
也许应该拆分此类,但是我对RxJava的知识和理解非常有限。谁创造RxJava的人肯定是非常聪明的,他们可以大概是选择创建提供有效的参数可流动有这么多的方法。
另一方面:
RxJava是Microsoft的Reactive Extensions的Java实现,甚至没有Flowable类,因此,这不是盲目移植现有类并用Java实现的情况。
[ 更新:斜体前一点是事实不正确:微软的可观察类,其中有超过400的方法,被用来作为RxJava的基础上可观察类,并且可流动相似,可观察到,但手柄背压的大量数据。因此,RxJava团队正在移植现有的类。这篇文章应该是挑战的原设计可观察到由微软而不是RxJava的类悬浮剂分类]
RxJava已有3年多的历史了,因此这并不是由于缺乏对良好(SOLID)类设计原理的了解而导致代码被错误设计的示例(与Java的早期版本一样)。
对于像Flowable这样大的类,其设计本质上是错误的,但也许不是。这个SE问题的一个答案一个类方法的数量限制是多少?建议答案是“ 拥有所需的多种方法 ”。
显然,有些类无论其语言如何,都合法地需要大量方法来支持它们,因为它们不会轻易分解为更小的东西,并且它们具有大量的特征和属性。例如:字符串,颜色,电子表格单元格,数据库结果集和HTTP请求。对于类来说,也许有几十种方法来表示这些东西似乎并不合理。
但是Flowable是否真的需要460种方法,还是它是如此之大以至于它必然是不良类设计的一个例子?
[需要明确的是:这个问题,特别是涉及RxJava的可流动类,而不是一般的神的对象。]