RxSwift kaj Coroutines en Kotlin - Mobile Development Elective de AGIMA kaj GeekBrains

RxSwift kaj Coroutines en Kotlin - Mobile Development Elective de AGIMA kaj GeekBrains

Scio estas bona, nur bonega. Sed ankaŭ necesas praktiko por povi uzi la ricevitajn datumojn, transdonante ilin de la statuso de "pasiva stokado" al la statuso de "aktiva uzo". Kiom ajn bona estas la teoria trejnado, ĝi ankoraŭ postulas laboron "sur la kampo". Ĉi tio validas por preskaŭ ajna areo de edukado, inkluzive de, kompreneble, programaro.

Ĉi-jare, GeekBrains, kadre de la fakultato de la reta universitato GeekUniversity pri movebla disvolviĝo, komencis labori kun la interaga agentejo AGIMA, kies teamo estas profesiaj programistoj (ili faras kompleksajn altŝarĝajn projektojn, kompaniajn portalojn kaj moveblajn aplikaĵojn, jen ĉio. ). AGIMA kaj GeekBrains kreis elekteblaĵon por profunda plonĝo en la praktikecojn de evoluado de poŝtelefonaj programoj.

La alian tagon ni parolis kun Igor Vedeneev, iOS-specialisto, kaj Alexander Tizik, Android-specialisto. Danke al ili, la elekta kurso pri movebla evoluado riĉiĝis per praktikado speciala kurso pri la kadro RxSwift и korutinoj en Kotlin. En ĉi tiu artikolo, programistoj parolas pri la graveco de ĉiu direkto por programistoj.

Reaktiva programado en iOS uzante RxSwift kiel ekzemplon

RxSwift kaj Coroutines en Kotlin - Mobile Development Elective de AGIMA kaj GeekBrains
Elektebla instruisto Igor Vedeneev: "Kun RxSwift via aplikaĵo flugos"

Kiajn informojn la studentoj ricevas en la elekta?

Ni parolas ne nur pri la kapabloj de la kadro, sed ankaŭ montras kiel uzi ĝin en la klasika pakaĵo MVVM + RxSwift. Pluraj praktikaj ekzemploj ankaŭ estas konsiderataj. Por solidigi la akiritajn datumojn, ni skribas aplikaĵon, kiu estas kiel eble plej proksima al la kampaj kondiĉoj de laboro. Ĝi estos muzika serĉa aplikaĵo kun iTunes Serĉa API. Tie ni aplikos ĉiujn Plej Bonajn Praktikojn, krome konsideros pli simplan uzon de RxSwift en la MVC-paradigmo.

RxSwift - kial ĉi tiu kadro bezonas iOS-programiston, kiel ĝi faciligas la vivon al programisto?

RxSwift fluliniigas laboron kun okazaĵfluoj kaj rilatoj inter objektoj. La plej simpla kaj evidenta ekzemplo estas ligadoj: ekzemple, vi povas ĝisdatigi la interfacon simple agordante novan valoron al variablo en la vidoModelo. Tiel, la interfaco fariĝas datuma. Krome, RxSwift permesas vin priskribi la sistemon en deklara stilo, kiu ebligas al vi plifaciligi la kodon kaj plibonigi legeblecon. Ĉio ĉi helpas disvolvi aplikojn pli efike.

Por programisto, scio pri la kadro ankaŭ estas bona pluso en vivresumo, ĉar kompreno pri reaktiva programado, kaj precipe sperto kun RxSwift, estas taksita en la merkato.

Kial elekti ĉi tiun apartan kadron kaj ne aliajn?

RxSwift havas la plej grandan komunumon. Tio estas, estas pli verŝajne, ke la problemo, kiun la programisto alfrontas, jam estis solvita de iu. Ankaŭ granda nombro da ligadoj el la skatolo. Plie, RxSwift estas parto de ReactiveX. Ĉi tio signifas, ke ekzistas analogo por Android, ekzemple (RxJava, RxKotlin), kaj kolegoj en la butiko povas paroli la saman lingvon unu kun la alia, malgraŭ ke iuj funkcias kun iOS, aliaj kun Android.

La kadro estas konstante ĝisdatigita, etaj eraroj estas fiksitaj, subteno por funkcioj de novaj versioj de Swift estas aldonita, novaj ligoj estas aldonitaj. Ĉar RxSwift estas malferma fonto, vi povas sekvi ĉiujn ŝanĝojn. Krome, eblas aldoni ilin mem.

Kie vi uzu RxSwift?

  1. Ligiloj. Kiel regulo, ĉi tie ni parolas pri la UI, la kapablo ŝanĝi la UI, kvazaŭ reagante al datumaj ŝanĝoj, kaj ne eksplicite diri al la interfaco, ke estas tempo ĝisdatigi.
  2. Komunikado de komponantoj kaj operacioj. Nur ekzemplo. Ni devas ricevi liston de datumoj de la reto. Fakte, ĉi tio ne estas tiel simpla operacio. Por fari tion, vi devas sendi peton, mapi la respondon en tabelon da objektoj, konservi ĝin al la datumbazo kaj doni ĝin al la UI. Kiel regulo, malsamaj komponantoj respondecas pri plenumi ĉi tiujn operaciojn (ni amas kaj sekvas la principojn SOLID?). Havante ĉemane ilon kiel RxSwift, iĝas eble priskribi KION la sistemo faros, kaj KIEL ĝi faros ĝin situos en aliaj lokoj. Estas pro tio ke pli bona organizo de la kodo estas atingita kaj legeblo estas pliigita. Relative parolante, la kodo povas esti dividita en enhavtabelon kaj la libron mem.

Korutinoj en Kotlin

RxSwift kaj Coroutines en Kotlin - Mobile Development Elective de AGIMA kaj GeekBrains
Elektebla instruisto Alexander Tizik: "Moderna evoluo postulas modernajn teknikajn rimedojn"

Kio estos instruata ĉe la GeekBrains-fakultato kiel parto de la marka kvarono?

Teorio, komparoj kun aliaj aliroj, praktikaj ekzemploj en pura Kotlin kaj en la Android-aplikmodelo. Koncerne praktikon, al studentoj estos montritaj aplikaĵo, en kiu ĉio estas ligita al korutineroj. La fakto estas ke la plej multaj aplikoj estas kontinua nesinkrona kaj paralela komputado. Sed Kotlin-korutinoj permesas redukti konfuzan, heterogenan aŭ tro kompleksan kaj efikecpostulan kodon al ununura, facile komprenebla stilo, gajnante en la ĝusteco de ekzekuto kaj agado.

Ni lernos kiel skribi idioman korutinan kodon, kiu solvas praktikajn problemojn kaj estas komprenebla je unu ekrigardo eĉ sen profunda scio pri kiel funkcias korutinoj (kio ne povas diri pri bibliotekoj kiel RxJava). Ni ankaŭ komprenos kiel uzi pli kompleksajn konceptojn, kiel la aktormodelo, por solvi pli kompleksajn problemojn, kiel datumstokado en la koncepto MVI.

Cetere, pli bonaj novaĵoj. Dum la elekto estis skribita, ĝisdatigo de la Kotlin Coroutines-biblioteko estis publikigita, en kiu la klaso aperis Flow - analogo de tipoj Flowable и Observable de RxJava. La ĝisdatigo, fakte, kompletigas la funkcion de korutinoj el la vidpunkto de programisto de aplikaĵo. Vere, estas ankoraŭ loko por disvolviĝo: malgraŭ tio, ke danke al la subteno de korutinoj en kotlin/denaska, jam eblas verki plurplatformajn aplikaĵojn en Kotlin kaj ne suferi pro manko de RxJava aŭ analogoj en pura Kotlin, subteno por korutinoj en kotlin/indiĝeno ankoraŭ ne estas kompleta. Ekzemple, ne ekzistas koncepto de aktoroj. Ĝenerale, la teamo de Kotlin planas subteni pli kompleksajn aktorojn sur ĉiuj platformoj.

Kotlin Coroutines - kiel ili helpas al Kotlin-programisto?

Korutinoj disponigas bonegan ŝancon skribi legeblan, konserveblan kaj sekuran, nesinkronan kaj samtempan kodon. Vi ankaŭ povas krei adaptilojn por aliaj nesinkronaj kadroj kaj aliroj, kiuj jam povas esti uzataj en la kodbazo.

Kiel Coroutines diferencas de fadenoj?

La Kotlin-teamo nomas korutinojn malpezaj fadenoj. Plie, korutino povas redoni iom da valoro, ĉar, ĉe sia kerno, korutino estas interrompita kalkulo. Ĝi ne dependas rekte de sistemaj fadenoj, fadenoj nur efektivigas korutinojn.

Kiujn praktikajn taskojn oni povas solvi per Corutin, kiuj ne povas aŭ malfacilas solvi per "pura" Kotlin?

Ĉiuj nesinkronaj, paralelaj, "konkurencivaj" taskoj estas bone solvataj helpe de korutinoj - ĉu ĝi pritraktas klakojn de la uzanto, ĉu iras al la reto, ĉu abonas ĝisdatigojn de la datumbazo.

En pura Kotlin, ĉi tiuj taskoj estas solvitaj same kiel en Java - uzante milojn da kadroj, ĉiu el kiuj havas siajn avantaĝojn kaj malavantaĝojn, sed neniu el ili havas subtenon je la lingvonivelo.

Kiel konkludo, oni devas diri, ke ambaŭ elekteblaj (kaj ankaŭ kernaj kursoj) estas ĝisdatigitaj laŭ ŝanĝoj en eksteraj kondiĉoj. Se estas gravaj ĝisdatigoj en lingvoj aŭ kadroj, instruistoj konsideras tion kaj modifas la programon. Ĉio ĉi ebligas al vi resti flankforma pri la evoluprocezo, por tiel diri.

fonto: www.habr.com

Aldoni komenton