RxSwift et Coroutines chez Kotlin - développement mobile optionnel d'AGIMA et GeekBrains



La connaissance est bonne, tout simplement géniale. Mais il faut aussi de la pratique pour pouvoir utiliser les données obtenues, en les faisant passer du statut de «stockage passif» au statut «d'utilisation active». Quelle que soit la qualité de la formation théorique, il faut plus de travail «sur le terrain». Ce qui précède s'applique à pratiquement tous les domaines d'études, y compris, bien sûr, le développement de logiciels.

Cette année, GeekBrains, dans le cadre du département de développement mobile de l'université en ligne GeekUniversity, a commencé à travailler avec l'agence interactive AGIMA, dont l'équipe est constituée de développeurs professionnels (réalisant des projets complexes à forte charge, des portails d'entreprise et des applications mobiles, c'est tout). AGIMA et GeekBrains ont créé une option pour une immersion profonde dans les questions pratiques du développement d'applications mobiles.

L'autre jour, nous avons discuté avec Igor Vedeneev, un spécialiste iOS, et Alexander Tizik, spécialisé dans Android. Grâce à eux, le cours optionnel sur le développement mobile a été enrichi par un cours spécial pratique sur le cadre RxSwift et les coroutines à Kotlin . Dans cet article, les développeurs parlent de l'importance de chaque direction pour les programmeurs.

Programmation réactive dans iOS en utilisant RxSwift comme exemple



Professeur optionnel Igor Vedeneev: «Avec RxSwift votre application volera»

Quelles informations les étudiants reçoivent-ils au choix?

Nous parlons non seulement des capacités du framework, mais montrons également comment l'appliquer dans le bundle MVVM + RxSwift classique. Plusieurs exemples pratiques sont également considérés. Pour consolider les données reçues, nous écrivons une application au plus près des conditions de travail sur le terrain. Ce sera une application de recherche de musique utilisant l' API iTunes Search . Là, nous appliquerons toutes les meilleures pratiques, et nous envisagerons une option plus simple pour utiliser RxSwift dans le paradigme MVC.

RxSwift - pourquoi ce framework pour programmeur iOS, comment simplifie-t-il la vie du développeur?

RxSwift rationalise le travail avec les flux d'événements et les relations entre les objets. L'exemple le plus simple et le plus évident est celui des classeurs: par exemple, vous pouvez mettre à jour l'interface en définissant simplement de nouvelles valeurs dans une variable dans viewModel. Ainsi, l'interface devient pilotée par les données. De plus, RxSwift vous permet de décrire le système dans un style déclaratif, ce qui vous permet de rationaliser le code et d'améliorer la lisibilité. Tout cela permet de développer des applications plus efficacement.

Pour le développeur, la connaissance du framework est également un bon plus dans le CV, car une compréhension de la programmation réactive, et surtout une expérience avec RxSwift, est appréciée sur le marché.

Pourquoi choisir ce cadre et pas les autres?

RxSwift possède la plus grande communauté. Autrement dit, il y a plus de chances que le problème auquel le développeur est confronté ait déjà été résolu par quelqu'un. Aussi un grand nombre de classeurs hors de la boîte. De plus, RxSwift fait partie de ReactiveX. Cela signifie qu'il existe un analogue pour Android, par exemple (RxJava, RxKotlin), et les collègues peuvent parler la même langue entre eux, malgré le fait que certains fonctionnent avec iOS, d'autres avec Android.

Le cadre est constamment mis à jour, des bugs mineurs sont corrigés, le support des puces des nouvelles versions de Swift est ajouté, de nouveaux classeurs sont ajoutés. Puisque RxSwift est open source, vous pouvez suivre toutes les modifications. De plus, il est possible de les ajouter vous-même.

Où utiliser RxSwift?

  1. Liaisons. En règle générale, nous parlons ici de l'interface utilisateur, de la possibilité de modifier l'interface utilisateur, comme si elle réagissait aux modifications des données, et de ne pas dire explicitement à l'interface qu'il était temps de mettre à jour.
  2. Reliez les composants et les opérations. Immédiatement un exemple. Nous devons obtenir une liste de données du réseau. En fait, ce n'est pas une opération aussi simple. Pour ce faire, envoyez une demande, mappez la réponse à un tableau d'objets, enregistrez-la dans la base de données et envoyez-la à l'interface utilisateur. En règle générale, les responsables de ces opérations sont différents composants (aimons-nous et respectons-nous les principes de SOLID ?). Ayant à portée de main un outil comme RxSwift, il devient possible de décrire CE QUE le système fera, et COMMENT il le fera - ce sera ailleurs. C'est grâce à cela que la meilleure organisation du code est obtenue et la lisibilité est augmentée. Relativement parlant, le code peut être divisé en une table des matières et le livre lui-même.

Coroutines à Kotlin



Professeur optionnel Alexander Tizik: «Le développement moderne nécessite des moyens techniques modernes»

Qu'est-ce qui sera enseigné à la faculté GeekBrains dans le cadre du quartier de la marque?

Théorie, comparaisons avec d'autres approches, exemples pratiques en Kotlin pur et dans le modèle d'application Android. En ce qui concerne la pratique, les étudiants verront une application dans laquelle tout est lié aux coroutines. Le fait est que la plupart des applications sont des calculs asynchrones et parallèles continus. Mais les coroutines Kotlin permettent de réduire à un style unique, facile à comprendre, déroutant, hétérogène ou trop complexe et exigeant en termes de code de performance, ce qui améliore les performances et les performances.

Nous apprendrons à écrire du code idiomatique sur les coroutines, ce qui résout des problèmes pratiques et est compréhensible à première vue même sans une connaissance approfondie du fonctionnement des coroutines (ce qui ne peut pas être dit à propos de bibliothèques comme RxJava). Nous comprendrons également comment utiliser des concepts plus complexes, tels qu'un modèle d'acteur, pour résoudre des tâches plus complexes, telles que l'entrepôt de données dans le concept MVI.

Au fait, encore de bonnes nouvelles. Pendant l'enregistrement de l'option, une mise à jour a été apportée à la bibliothèque Kotlin Coroutines, dans laquelle la classe Flow est apparue - un analogue des types Flowable et Observable de RxJava. La mise à jour rend essentiellement la fonctionnalité coroutines du point de vue du développeur de l'application. Certes, il y a encore beaucoup de place pour le développement: malgré le fait que grâce à la prise en charge de coroutine en kotlin / native, il soit déjà possible d'écrire des applications multi-plateformes en Kotlin et de ne pas souffrir de l'absence de RxJava ou d'analogues en Kotlin pur, la prise en charge de coroutine en kotlin / native n'est pas encore terminée. Par exemple, il n'y a pas de concept d'acteurs. En général, l'équipe Kotlin prévoit de prendre en charge des acteurs plus complexes sur toutes les plateformes.

Kotlin Coroutines - comment aident-ils le développeur Kotlin?

Les coroutines offrent une excellente opportunité d'écrire du code lisible, pris en charge et sûr, asynchrone et «simultané». Vous pouvez également créer des adaptateurs pour d'autres cadres et approches asynchrones qui peuvent déjà être utilisés dans la base de code.

En quoi les Coroutines diffèrent-elles des flux?

L'équipe Kotlin appelle les flux légers coroutines. De plus, la coroutine peut renvoyer une certaine valeur, car, en substance, la coroutine est un calcul suspendu. Cela ne dépend pas directement des threads système, les threads exécutent uniquement les coroutines.

Quels problèmes pratiques peuvent être résolus en utilisant Corutin, qui ne peuvent pas ou sont difficiles à résoudre avec l'aide de Kotlin «propre»?

Toutes les tâches asynchrones, parallèles et "compétitives" sont bien résolues à l'aide de coroutine - qu'il s'agisse de traiter les clics des utilisateurs, d'aller sur le réseau ou de s'abonner aux mises à jour de la base de données.

Dans Kotlin pur, ces tâches sont résolues de la même manière qu'en Java - à l'aide de milliers de frameworks, chacun ayant ses avantages et ses inconvénients, mais aucun d'entre eux n'a de support au niveau du langage.



En conclusion, il convient de dire que les cours au choix (et les cours principaux également) sont mis à jour en fonction des changements des conditions externes. Si des mises à jour importantes apparaissent dans les langues ou les frameworks, les enseignants en tiennent compte et modifient le programme. Tout cela vous permet de vous tenir au courant du processus de développement, si je puis dire.

Source: https://habr.com/ru/post/fr453962/


All Articles