RxSwift și coroutines în Kotlin - o opțiune în dezvoltarea mobilă de la AGIMA și GeekBrains

RxSwift și coroutines în Kotlin - o opțiune în dezvoltarea mobilă de la AGIMA și GeekBrains

Cunoștințele sunt bune, pur și simplu grozave. Dar este nevoie și de practică pentru a putea folosi datele primite, transferându-le din starea „stocare pasivă” în starea „utilizare activă”. Oricât de bună este pregătirea teoretică, munca „în domeniu” este totuși necesară. Cele de mai sus se aplică aproape oricărui domeniu de studiu, inclusiv, desigur, dezvoltarea de software.

Anul acesta, GeekBrains, ca parte a facultății de dezvoltare mobilă a universității online GeekUniversity, a început să lucreze cu agenția interactivă AGIMA, a cărei echipă este formată de dezvoltatori profesioniști (creează proiecte complexe de mare încărcare, portaluri corporative și aplicații mobile, atâta tot). AGIMA și GeekBrains au creat o opțiune pentru o scufundare profundă în problemele practice ale dezvoltării aplicațiilor mobile.

Zilele trecute am vorbit cu Igor Vedeneev, specialist iOS, și Alexander Tizik, specializat în Android. Datorită acestora, opțiunea despre dezvoltarea mobilă a fost îmbogățită cu practică curs special despre cadrul RxSwift и coroutines în Kotlin. În acest articol, dezvoltatorii vorbesc despre importanța fiecărei zone pentru programatori.

Programare reactivă în iOS folosind RxSwift ca exemplu

RxSwift și coroutines în Kotlin - o opțiune în dezvoltarea mobilă de la AGIMA și GeekBrains
Profesor electiv Igor Vedeneev: „Cu RxSwift, aplicația ta va zbura”

Ce informații primesc elevii în timpul opționalului?

Vorbim nu numai despre capacitățile cadrului, ci și despre cum să îl folosim în combinația clasică MVVM + RxSwift. De asemenea, sunt discutate mai multe exemple practice. Pentru a consolida datele obținute, scriem o aplicație cât mai apropiată de condițiile de funcționare pe teren. Aceasta va fi o aplicație de căutare muzicală folosind iTunes Search API. Acolo vom aplica toate cele mai bune practici, plus luăm în considerare o opțiune mai simplă pentru utilizarea RxSwift în paradigma MVC.

RxSwift - de ce are nevoie un programator iOS de acest cadru, cum îi face viața mai ușoară unui dezvoltator?

RxSwift eficientizează lucrul cu fluxuri de evenimente și conexiuni între obiecte. Cel mai simplu și mai evident exemplu sunt legările: de exemplu, puteți actualiza interfața prin simpla setare a unor noi valori într-o variabilă din viewModel. Astfel, interfața devine bazată pe date. În plus, RxSwift vă permite să descrieți sistemul într-un stil declarativ, ceea ce vă permite să vă organizați codul și să creșteți lizibilitatea. Toate acestea ajută la dezvoltarea aplicațiilor mai eficient.

Pentru un dezvoltator, cunoașterea cadrului este, de asemenea, un avantaj bun pe un CV, deoarece înțelegerea programării reactive și în special experiența cu RxSwift este apreciată pe piață.

De ce să alegeți acest cadru special în detrimentul altora?

RxSwift are cea mai mare comunitate. Adică, există o șansă mai mare ca problema cu care se confruntă dezvoltatorul să fi fost deja rezolvată de cineva. De asemenea, un număr mare de legături din cutie. Mai mult, RxSwift face parte din ReactiveX. Aceasta înseamnă că există un analog pentru Android, de exemplu (RxJava, RxKotlin), iar colegii din atelier pot vorbi aceeași limbă între ei, în ciuda faptului că unii lucrează cu iOS, alții cu Android.

Cadrul este actualizat constant, erorile minore sunt corectate, se adaugă suport pentru funcții din noile versiuni de Swift și sunt adăugate noi legături. Deoarece RxSwift este open source, puteți urmări toate modificările. Mai mult, este posibil să le adăugați singur.

Unde ar trebui utilizat RxSwift?

  1. Legături. De regulă, vorbim despre interfața de utilizare, capacitatea de a schimba interfața de utilizare, ca și cum ar fi reacționând la modificările datelor și nu i-ar spune în mod explicit interfeței că este timpul să se actualizeze.
  2. Relația dintre componente și operații. Doar un exemplu. Trebuie să obținem o listă de date din rețea. De fapt, aceasta nu este o operațiune atât de simplă. Pentru a face acest lucru, trebuie să trimiteți o solicitare, să mapați răspunsul într-o serie de obiecte, să îl salvați în baza de date și să îl trimiteți la UI. De regulă, diferite componente sunt responsabile pentru efectuarea acestor operații (iubim și respectăm principiile SOLID?). Având la îndemână un instrument precum RxSwift, devine posibil să descriem CE va face sistemul și CUM va face va fi în alte locuri. Din acest motiv, se realizează o mai bună organizare a codului și crește lizibilitatea. Relativ vorbind, codul poate fi împărțit într-un cuprins și cartea în sine.

Coroutines în Kotlin

RxSwift și coroutines în Kotlin - o opțiune în dezvoltarea mobilă de la AGIMA și GeekBrains
Profesorul de curs opțional Alexander Tizik: „Dezvoltarea modernă necesită mijloace tehnice moderne”

Ce va fi predat la facultatea GeekBrains ca parte a trimestrului de marcă?

Teorie, comparații cu alte abordări, exemple practice în Kotlin pur și în modelul de aplicație Android. Cât despre practică, elevilor li se va arăta o aplicație în care totul este legat de corutine. Cert este că majoritatea aplicațiilor sunt complet asincrone și paralele. Dar corutinele Kotlin permit ca codul confuz, eterogen sau prea complex și care necesită performanță să fie redus la un stil unic, ușor de înțeles, obținând beneficii în execuția și performanța corectă.

Vom învăța să scriem cod idiomatic în corutine care rezolvă probleme practice și este de înțeles la prima vedere chiar și fără cunoaștere profundă a modului în care funcționează corutinele (ceea ce nu se poate spune despre biblioteci precum RxJava). De asemenea, vom înțelege cum să folosim concepte mai complexe, cum ar fi modelul actor, pentru a rezolva probleme mai complexe, cum ar fi depozitul de date în conceptul MVI.

Apropo, mai multe vești bune. În timp ce se înregistra opțiunea, a fost lansată o actualizare a bibliotecii Kotlin Coroutines, în care a apărut clasa Flow - analog de tipuri Flowable и Observable de la RxJava. Actualizarea completează, în esență, funcția coroutines din punctul de vedere al dezvoltatorului aplicației. Adevărat, există încă loc de îmbunătățire: în ciuda faptului că, datorită suportului coroutinelor în kotlin/nativ, este deja posibil să scrieți aplicații multi-platformă în Kotlin și să nu suferiți de lipsa RxJava sau a analogilor în Kotlin pur, suportul pentru coroutine în kotlin/nativ nu este încă complet. De exemplu, nu există conceptul de actori. În general, echipa Kotlin are planuri de a sprijini actori mai complexi pe toate platformele.

Kotlin Coroutines - cum ajută ele un dezvoltator Kotlin?

Coroutines oferă o oportunitate excelentă de a scrie cod care poate fi citit, întreținut și sigur, asincron și simultan. De asemenea, puteți crea adaptoare pentru alte cadre și abordări asincrone care pot fi deja utilizate în baza de cod.

Prin ce diferă Coroutine de fire?

Echipa Kotlin numește coroutine fire ușoare. În plus, o corutine poate returna un fel de valoare, deoarece, în esență, o corutine este un calcul suspendat. Nu depinde direct de firele de execuție ale sistemului; firele execută doar corutine.

Ce probleme practice pot fi rezolvate folosind Coroutine, care nu pot sau sunt greu de rezolvat folosind Kotlin „pur”?

Orice sarcină asincronă, paralelă, „competitivă” este bine rezolvată folosind corutine - fie că este vorba de procesarea clicurilor utilizatorilor, de accesarea online sau de abonarea la actualizări dintr-o bază de date.

În Kotlin pur, aceste probleme sunt rezolvate în același mod ca și în Java - cu ajutorul a mii de cadre, fiecare dintre ele având propriile sale avantaje și dezavantaje, dar niciunul nu are suport la nivel de limbaj.

În concluzie, merită să spunem că ambele opțiuni (și și cursurile principale) sunt actualizate în funcție de schimbările condițiilor externe. Dacă apar actualizări importante în limbi sau cadre, profesorii iau în considerare acest lucru și modifică programul. Toate acestea vă permit să țineți degetul pe pulsul procesului de dezvoltare, ca să spunem așa.

Sursa: www.habr.com

Adauga un comentariu