Kotlin的RxSwift和Coroutines-AGIMA和GeekBrains的可选移动开发



知识很好,也很好。 但是我们还需要实践才能使用获得的数据,将其从“被动存储”状态转移到“主动使用”状态。 无论多么好的理论培训,“现场”都需要做更多的工作。 前述内容几乎适用于任何研究领域,当然包括软件开发。

今年,GeekBrains作为GeekUniversity在线大学的移动开发部门的一部分,开始与互动机构AGIMA合作,后者的团队是专业开发人员(从事复杂的高负荷项目,公司门户和移动应用程序,仅此而已)。 AGIMA和GeekBrains已经创建了一个选修课,用于深入研究移动应用程序开发的实际问题。

前几天,我们与iOS专家Igor Vedeneev和专门研究Android的Alexander Tizik进行了交谈。 多亏了他们,有关移动开发的选修课程 在Kotlin 的RxSwift框架协程实践特别课程中得到了充实 。 在本文中,开发人员讨论了每个方向对程序员的重要性。

以RxSwift为例的iOS响应式编程



任职老师Igor Vedeneev:“有了RxSwift,您的应用程序就会运行”

学生在选修课中会收到什么信息?

我们不仅讨论了框架的功能,还展示了如何在经典的MVVM + RxSwift软件包中应用它。 还考虑了几个实际示例。 为了合并接收到的数据,我们编写了一个与现场工作条件尽可能接近的应用程序。 这将是一个使用iTunes Search 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之类的工具,就可以描述系统将要做什么,以及它将如何去做-在其他地方。 因此,可以实现代码的最佳组织,并提高可读性。 相对而言,代码可以分为目录和书本。

科特林的协程



选修教师亚历山大·蒂齐克(Alexander Tizik):“现代发展需要现代技术手段”

作为品牌区的一部分,GeekBrains教员将教什么?

理论,与其他方法的比较,纯Kotlin和Android应用程序模型中的实际示例。 在实践方面,将向学生展示一种将一切与协程相关联的应用程序。 事实是,大多数应用程序都是连续的异步和并行计算。 但是Kotlin协程允许将性能代码方面的混乱,异类或过于复杂和苛刻的要求简化为单一,易于理解的样式,从而获得正确的执行和性能。

我们将学习如何在协程上编写惯用的代码,该代码可以解决实际问题,即使不深入了解协程的工作原理(对于RxJava之类的库也不能这么说),乍看之下也是可以理解的。 我们还将了解如何使用角色模型等更复杂的概念来解决更复杂的任务,例如MVI概念中的数据仓库。

顺便说一句,更多的好消息。 在记录可选内容的同时,对Kotlin Coroutines库进行了更新,其中出现了Flow类-RxJava的Flowable和Observable类型的类似物。 从应用程序开发人员的角度来看,此更新实质上使协同程序功能完整。 的确,还有很大的发展空间:尽管有幸在kotlin / native中支持了协程,但已经有可能在Kotlin中编写多平台应用程序,并且没有在纯Kotlin中缺少RxJava或类似物的情况,在kotlin / native中对协程的支持尚不完整。 例如,没有演员的概念。 通常,Kotlin团队计划在所有平台上为更复杂的参与者提供支持。

Kotlin Coroutines-他们如何帮助Kotlin开发人员?

协程为编写可读,受支持且安全,异步和“并发”的代码提供了极好的机会。 您还可以为代码库中已经可以使用的其他异步框架和方法创建适配器。

协程与流有何不同?

Kotlin团队将协程称为轻量级流程。 另外,协程可以返回一些值,因为协程本质上是一个挂起的计算。 它不直接依赖于系统线程,线程仅执行协程。

使用Corutin可以解决哪些实际问题,而借助“干​​净”的Kotlin则无法解决或难以解决?

在协程的帮助下,任何异步,并行,“竞争性”的任务都可以很好地解决-无论是处理用户的点击,进入网络还是订阅数据库更新。

在纯Kotlin中,这些任务的解决方法与Java中的解决方法相同-在数千个框架的帮助下,每个框架都有其优缺点,但是它们都不在语言级别获得支持。



总而言之,值得一说的是,两个选修课(以及主要课程)都根据外部条件的变化而更新。 如果重要更新出现在语言或框架中,则教师会考虑到这一点并修改程序。 如果可以的话,所有这些使您能够与开发过程保持同步。

Source: https://habr.com/ru/post/zh-CN453962/


All Articles