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 相同——借助數千個框架,每個框架都有自己的優點和缺點,但沒有一個具有語言層級的支援。

總而言之,值得一提的是,兩門選修課(以及主幹課程)都是根據外部條件的變化而更新的。 如果語言或框架出現重要更新,教師會考慮到這一點並修改程式。 可以這麼說,所有這些都使您能夠掌握開發過程的脈動。

來源: www.habr.com

添加評論