RxSwift 和 Kotlin 中的协程 - AGIMA 和 GeekBrains 的移动开发选修课

RxSwift 和 Kotlin 中的协程 - AGIMA 和 GeekBrains 的移动开发选修课

知识是好的,非常棒。 但也需要练习,才能使用接收到的数据,将其从“被动存储”状态转变为“主动使用”状态。 不管理论训练有多好,“实地”工作仍然是必要的。 上述内容几乎适用于任何研究领域,当然包括软件开发。

今年,GeekBrains 作为在线大学 GeekUniversity 移动开发学院的一部分,开始与互动机构 AGIMA 合作,后者的团队是专业开发人员(他们创建复杂的高负载项目、企业门户和移动应用程序,仅此而已)。 AGIMA 和 GeekBrains 创建了一门选修课,旨在深入探讨移动应用程序开发的实际问题。

有一天,我们采访了 iOS 专家 Igor Vedeneev 和 Android 专家 Alexander Tizik。 感谢他们,移动开发选修课变得更加丰富和实用 RxSwift框架专题课程 и Kotlin 中的协程。 在这篇文章中,开发人员讨论了每个领域对于程序员的重要性。

以 RxSwift 为例的 iOS 响应式编程

RxSwift 和 Kotlin 中的协程 - AGIMA 和 GeekBrains 的移动开发选修课
选修课教师 Igor Vedeneev:“有了 RxSwift,你的应用程序将会飞速发展”

学生在选修课期间收到哪些信息?

我们不仅讨论框架的功能,还展示如何在经典的 MVVM + RxSwift 组合中使用它。 还讨论了几个实际例子。 为了整合获得的数据,我们编写了一个尽可能接近现场操作条件的应用程序。 这将是一个音乐搜索应用程序,使用 iTunes 搜索 API。 在那里,我们将应用所有最佳实践,并考虑在 MVC 范例中使用 RxSwift 的更简单选项。

RxSwift - 为什么 iOS 程序员需要这个框架,它如何让开发人员的生活更轻松?

RxSwift 简化了事件流和对象之间连接的处理。 最简单、最明显的例子是绑定:例如,您可以通过简单地在 viewModel 中的变量中设置新值来更新界面。 因此,界面变成了数据驱动的。 此外,RxSwift 允许您以声明式风格描述系统,这使您可以组织代码并提高可读性。 所有这些都有助于更有效地开发应用程序。

对于开发人员来说,了解该框架也是简历上的一个很好的加分项,因为对反应式编程的理解,尤其是 RxSwift 的经验,在市场上很有价值。

为什么选择这个特定的框架而不是其他框架?

RxSwift 拥有最大的社区。 也就是说,开发人员面临的问题更有可能已经被某人解决了。 还有大量开箱即用的绑定。 此外,RxSwift 是 ReactiveX 的一部分。 这意味着 Android 有一个类似的工具,例如(RxJava、RxKotlin),并且研讨会中的同事可以彼此使用相同的语言,尽管事实上有些人使用 iOS,其他人使用 Android。

该框架不断更新,修正了小错误,添加了对新版本 Swift 功能的支持,并添加了新的绑定。 由于 RxSwift 是开源的,因此您可以跟踪所有更改。 此外,您可以自己添加它们。

RxSwift 应该用在哪里?

  1. 绑定。 通常,我们谈论的是 UI,即更改 UI 的能力,就像对数据更改做出反应一样,而不是明确告诉界面该更新了。
  2. 组件和操作之间的关系。 只是一个例子。 我们需要从网络获取数据列表。 事实上,这并不是一个这么简单的操作。 为此,您需要发送请求,将响应映射到对象数组中,将其保存到数据库并将其发送到 UI。 通常,不同的组件负责执行这些操作(我们喜欢并遵循以下原则 SOLID?)。 手头有像 RxSwift 这样的工具,就可以在其他地方描述系统将做什么以及如何做。 因此,可以更好地组织代码并提高可读性。 相对来说,代码可以分为目录和书本身。

Kotlin 中的协程

RxSwift 和 Kotlin 中的协程 - AGIMA 和 GeekBrains 的移动开发选修课
选修课老师Alexander Tizik:“现代发展需要现代技术手段”

作为品牌季度的一部分,GeekBrains 教师将教授哪些内容?

理论、与其他方法的比较、纯 Kotlin 和 Android 应用程序模型中的实际示例。 至于练习,我们将向学生展示一个应用程序,其中所有内容都与协程相关联。 事实上,大多数应用程序都是完全异步和并行计算的。 但 Kotlin 协程允许将混乱、异构或过于复杂且对性能要求较高的代码简化为单一、易于理解的样式,从而在正确执行和性能方面获得好处。

我们将学习在协程中编写惯用的代码,这些代码可以解决实际问题,并且即使没有深入了解协程如何工作(对于像 RxJava 这样的库就不行了),乍一看也可以理解。 我们还将了解如何使用更复杂的概念(例如参与者模型)来解决更复杂的问题(例如MVI概念中的数据仓库)。

顺便说一句,还有更多好消息。 在录制选修课时,发布了 Kotlin 协程库的更新,其中出现了该课程 Flow - 类型的类似物 Flowable и Observable 来自 RxJava。 从应用程序开发人员的角度来看,该更新本质上使协程功能变得完整。 确实,仍然有改进的空间:尽管事实上,由于 kotlin/native 中协程的支持,已经可以在 Kotlin 中编写多平台应用程序,而不会受到缺乏 RxJava 或纯 Kotlin 类似物的困扰, kotlin/native 对协程的支持尚未完成。 例如,没有演员的概念。 总的来说,Kotlin 团队计划在所有平台上支持更复杂的参与者。

Kotlin 协程 - 它们如何帮助 Kotlin 开发人员?

协程提供了编写可读、可维护、安全、异步和并发代码的绝佳机会。 您还可以为代码库中可能已使用的其他异步框架和方法创建适配器。

协程与线程有何不同?

Kotlin 团队将协程称为轻量级线程。 另外,协程可以返回一些值,因为协程的核心是暂停计算。 它不直接依赖于系统线程;线程只执行协程。

哪些实际问题可以使用 Coroutine 解决,而使用“纯”Kotlin 无法或难以解决?

任何异步、并行、“竞争”任务都可以使用协程很好地解决 - 无论是处理用户点击、上网还是订阅数据库更新。

在纯 Kotlin 中,这些问题的解决方式与 Java 中相同——借助数千个框架,每个框架都有自己的优点和缺点,但没有一个具有语言级别的支持。

总而言之,值得一提的是,两门选修课(以及主干课程)都是根据外部条件的变化而更新的。 如果语言或框架出现重要更新,教师会考虑到这一点并修改程序。 可以这么说,所有这些都使您能够掌握开发过程的脉搏。

来源: habr.com

添加评论