首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我应该使用反应性编程(RxJava)来解决复杂的问题吗?

我应该使用反应性编程(RxJava)来解决复杂的问题吗?
EN

Stack Overflow用户
提问于 2017-12-14 15:55:29
回答 1查看 831关注 0票数 3

我有一个应用程序,在该应用程序中,我开始将事件流表示为可观察的RxJava。事件的需求和结构在开始时很简单,RxJava附带的操作符非常适合于所需的简单转换。

然而,从那时起,需求和业务逻辑变得更加复杂。需要以非常特殊的方式将事件关联起来,而对可观察到的事件的操作在以前是如此友好和友好的操作变成了大量的代码块。我不得不写自定义变压器,我使用从其他定制变压器,等等。

尽管我确信,如果不使用RxJava,代码至少会变得和现在一样复杂,但我担心的是以下几点:

  1. 所有的东西都是以一种反应式的方式写的,我认为对于大多数新来的人来说,这是很难得到的,我担心这会对项目的进一步贡献造成限制。
  2. 我的一个朋友(他也在做这个项目)多次提到RxJava应该被使用得简单得多。他说,他见过的任何基于RxJava的项目都使用简单的操作符,而无需在彼此之间嵌套自定义变压器。
  3. 测试代码变得很困难。除非我嘲笑我的小变压器,我必须测试所有的东西在一起,但否则我必须使用它们作为使用它们的变压器的构造器参数,这感觉不对,即使是注入。

我认为,我的问题必须有一个明确的答案:应该是RxJava来处理复杂的问题,如果是的话,以什么方式?如何测试这些解决方案?现在只能想出需要将代码组织成不同单元的解决方案,这样我就不会有数百行与groupyBy、flatMap、scan和combineLatest操作符相互嵌套在一起的连续代码。

谢谢你的回答!

(顺便说一句,我非常喜欢反应式编程,因为它在某些问题上更直接,尤其是在它帮助我避免直接处理可变状态的情况下。也许我最担心的是可测试性。我通常在kotlin中使用依赖项注入,并为所有内容编写单独的单元测试,但我怀疑这是RxJava中最好的解决方案)

EN

回答 1

Stack Overflow用户

发布于 2017-12-14 16:21:52

RxJava就像任何一个好工具:如果使用得当,它就会做得很好。您已经让代码随着需求的增长而增长,而您的“好工具”正开始使您不堪重负。

RxJava对于解决需要跨越线程边界的复杂协调的问题非常有用。运算符允许您将数据“成群”到所需的线程上,并确保线程安全操作,而无需在大多数情况下过度使用synchronizedvolatile构造。

重构您的代码如果有什么东西很难单元测试,重构它。如果某件事情很难理解,重构和/或重新设计它。

反应式是一门学问。不要因为它是困难的,或者因为其他人可能不理解它而放弃它。反应性样式提供给您的最重要功能是对代码进行推理的能力,甚至跨越线程边界,以及时间和空间本身:)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47817432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档