RxSwift na coroutines huko Kotlin - chaguo katika maendeleo ya rununu kutoka AGIMA na GeekBrains

RxSwift na coroutines huko Kotlin - chaguo katika maendeleo ya rununu kutoka AGIMA na GeekBrains

Ujuzi ni mzuri, mzuri tu. Lakini mazoezi pia yanahitajika ili uweze kutumia data iliyopokelewa, ukizihamisha kutoka kwa hali ya "hifadhi ya passiv" hadi hali ya "matumizi ya kazi". Haijalishi jinsi mafunzo ya kinadharia ni mazuri, kazi "katika shamba" bado inahitajika. Ya hapo juu inatumika kwa karibu uwanja wowote wa masomo, pamoja na, bila shaka, ukuzaji wa programu.

Mwaka huu, GeekBrains, kama sehemu ya kitivo cha ukuzaji wa rununu cha chuo kikuu cha mtandaoni cha GeekUniversity, kilianza kufanya kazi na wakala shirikishi wa AGIMA, ambao timu yao ni watengenezaji wa kitaalamu (wanaunda miradi changamano yenye mzigo mkubwa, lango la kampuni na programu za rununu, ndivyo tu). AGIMA na GeekBrains wameunda chaguo kwa ajili ya kupiga mbizi kwa kina katika masuala ya vitendo ya ukuzaji wa programu za rununu.

Juzi tulizungumza na Igor Vedeneev, mtaalamu wa iOS, na Alexander Tizik, aliyebobea katika Android. Shukrani kwao, wateule juu ya ukuzaji wa rununu waliboreshwa na vitendo kozi maalum kwenye mfumo wa RxSwift ΠΈ coroutines huko Kotlin. Katika nakala hii, watengenezaji wanazungumza juu ya umuhimu wa kila eneo kwa waandaaji wa programu.

Programu tendaji katika iOS kwa kutumia RxSwift kama mfano

RxSwift na coroutines huko Kotlin - chaguo katika maendeleo ya rununu kutoka AGIMA na GeekBrains
Mwalimu mteule Igor Vedeneev: "Ukiwa na RxSwift, maombi yako yataruka"

Ni taarifa gani wanafunzi hupokea wakati wa uchaguzi?

Hatuzungumzii tu juu ya uwezo wa mfumo, lakini pia tunaonyesha jinsi ya kuitumia katika mchanganyiko wa kawaida wa MVVM + RxSwift. Mifano kadhaa ya vitendo pia inajadiliwa. Ili kuunganisha data iliyopatikana, tunaandika programu ambayo iko karibu iwezekanavyo na hali ya uendeshaji ya shamba. Hii itakuwa programu ya kutafuta muziki kutumia iTunes Search API. Hapo tutatumia Mbinu zote Bora, pamoja na kuzingatia chaguo rahisi zaidi la kutumia RxSwift katika dhana ya MVC.

RxSwift - kwa nini programu ya iOS inahitaji mfumo huu, ni jinsi gani hurahisisha maisha kwa msanidi programu?

RxSwift inaboresha kazi na mitiririko ya hafla na miunganisho kati ya vitu. Mfano rahisi na dhahiri zaidi ni vifungo: kwa mfano, unaweza kusasisha kiolesura kwa kuweka tu maadili mapya katika kutofautisha katika viewModel. Kwa hivyo, interface inakuwa inayoendeshwa na data. Kwa kuongeza, RxSwift inakuwezesha kuelezea mfumo kwa mtindo wa kutangaza, ambayo inakuwezesha kupanga msimbo wako na kuongeza usomaji. Yote hii husaidia kukuza programu kwa ufanisi zaidi.

Kwa msanidi programu, ujuzi wa mfumo pia ni mzuri kwa kuanza tena, kwani uelewa wa programu tendaji, na haswa uzoefu na RxSwift, inathaminiwa sokoni.

Kwa nini uchague mfumo huu mahususi juu ya wengine?

RxSwift ina jamii kubwa zaidi. Hiyo ni, kuna nafasi kubwa zaidi kwamba tatizo ambalo msanidi anakabiliana nalo tayari limetatuliwa na mtu. Pia idadi kubwa ya vifungo nje ya boksi. Zaidi ya hayo, RxSwift ni sehemu ya ReactiveX. Hii ina maana kwamba kuna analog ya Android, kwa mfano (RxJava, RxKotlin), na wenzake katika warsha wanaweza kuzungumza lugha moja na kila mmoja, licha ya ukweli kwamba baadhi ya kazi na iOS, wengine na Android.

Mfumo huo unasasishwa kila mara, hitilafu ndogo ndogo husahihishwa, usaidizi wa vipengele kutoka kwa matoleo mapya ya Swift huongezwa, na vifungo vipya vinaongezwa. Kwa kuwa RxSwift ni chanzo wazi, unaweza kufuata mabadiliko yote. Aidha, inawezekana kuwaongeza mwenyewe.

Je, RxSwift inapaswa kutumika wapi?

  1. Vifungo. Kama sheria, tunazungumza juu ya UI, uwezo wa kubadilisha UI, kana kwamba kuguswa na mabadiliko ya data, na sio kuwaambia kiolesura wazi kuwa ni wakati wa kusasisha.
  2. Uhusiano kati ya vipengele na uendeshaji. Mfano tu. Tunahitaji kupata orodha ya data kutoka kwa mtandao. Kwa kweli, hii sio operesheni rahisi. Ili kufanya hivyo, unahitaji kutuma ombi, ramani ya majibu katika safu ya vitu, uihifadhi kwenye hifadhidata na uitume kwa UI. Kama sheria, vipengele tofauti vinawajibika kwa kufanya shughuli hizi (tunapenda na kufuata kanuni MANGO?). Kuwa na zana kama RxSwift karibu, inawezekana kuelezea NINI mfumo utafanya, na JINSI itafanya itakuwa katika maeneo mengine. Ni kutokana na hili kwamba shirika bora la kanuni hupatikana na usomaji unaongezeka. Kwa kusema, nambari inaweza kugawanywa katika jedwali la yaliyomo na kitabu chenyewe.

Mikutano huko Kotlin

RxSwift na coroutines huko Kotlin - chaguo katika maendeleo ya rununu kutoka AGIMA na GeekBrains
Mwalimu wa kozi ya uchaguzi Alexander Tizik: "Maendeleo ya kisasa yanahitaji njia za kisasa za kiufundi"

Ni nini kitafundishwa katika kitivo cha GeekBrains kama sehemu ya robo ya chapa?

Nadharia, kulinganisha na mbinu zingine, mifano ya vitendo katika Kotlin safi na katika muundo wa programu ya Android. Kuhusu mazoezi, wanafunzi wataonyeshwa maombi ambayo kila kitu kimefungwa kwa coroutines. Ukweli ni kwamba maombi mengi ni asynchronous kabisa na sambamba kompyuta. Lakini kanuni za utaratibu za Kotlin huruhusu msimbo unaotatanisha, usio tofauti au changamano kupita kiasi na unaohitaji utendakazi kupunguzwa hadi mtindo mmoja, ulio rahisi kueleweka, kupata manufaa katika utekelezaji na utendakazi sahihi.

Tutajifunza kuandika msimbo wa idiomatic katika coroutines ambayo hutatua matatizo ya vitendo na inaeleweka kwa mtazamo wa kwanza hata bila ujuzi wa kina wa jinsi coroutines hufanya kazi (ambayo haiwezi kusemwa kuhusu maktaba kama RxJava). Pia tutaelewa jinsi ya kutumia dhana changamano zaidi, kama vile modeli ya mwigizaji, kutatua matatizo changamano zaidi, kama vile ghala la data katika dhana ya MVI.

Kwa njia, habari njema zaidi. Wakati uteuzi ulikuwa unarekodiwa, sasisho kwa maktaba ya Kotlin Coroutines ilitolewa, ambayo darasa lilionekana. Flow - analog ya aina Flowable ΠΈ Observable kutoka RxJava. Sasisho kimsingi hufanya kipengele cha coroutines kikamilike kutoka kwa mtazamo wa msanidi programu. Kweli, bado kuna nafasi ya kuboresha: licha ya ukweli kwamba shukrani kwa msaada wa coroutines katika kotlin / asili, tayari inawezekana kuandika maombi ya jukwaa mbalimbali huko Kotlin na si kuteseka kutokana na ukosefu wa RxJava au analogues katika Kotlin safi, usaidizi wa coroutines katika kotlin/native bado haujakamilika. Kwa mfano, hakuna dhana ya watendaji. Kwa ujumla, timu ya Kotlin ina mipango ya kusaidia watendaji ngumu zaidi kwenye majukwaa yote.

Kotlin Coroutines - wanamsaidiaje msanidi wa Kotlin?

Coroutines hutoa fursa nzuri ya kuandika msimbo unaosomeka, unaoweza kudumishwa, na salama, usio na usawa na unaopatana. Unaweza pia kuunda adapta za mifumo mingine isiyosawazika na mbinu ambazo tayari zinaweza kutumika kwenye msingi wa msimbo.

Je, Coroutines ni tofauti gani na nyuzi?

Timu ya Kotlin huita coroutines nyuzi nyepesi. Zaidi ya hayo, coroutine inaweza kurudi thamani fulani, kwa sababu, kwa msingi wake, coroutine ni hesabu iliyosimamishwa. Haitegemei moja kwa moja kwenye nyuzi za mfumo; nyuzi hutekeleza tu coroutines.

Ni matatizo gani ya vitendo yanaweza kutatuliwa kwa kutumia Coroutine, ambayo haiwezi au ni vigumu kutatua kwa kutumia "safi" Kotlin?

Kazi zozote zisizolingana, sawia, "za ushindani" hutatuliwa vyema kwa kutumia coroutines - iwe kuchakata mibofyo ya mtumiaji, kwenda mtandaoni, au kujiandikisha kwa masasisho kutoka kwa hifadhidata.

Katika Kotlin safi, matatizo haya yanatatuliwa kwa njia sawa na katika Java - kwa msaada wa maelfu ya mifumo, ambayo kila mmoja ina faida na hasara zake, lakini hakuna hata mmoja wao ana usaidizi wa kiwango cha lugha.

Kama hitimisho, inafaa kusema kwamba chaguzi zote mbili (na kozi kuu pia) zinasasishwa kulingana na mabadiliko ya hali ya nje. Ikiwa masasisho muhimu yanaonekana katika lugha au mifumo, walimu huzingatia hili na kurekebisha programu. Yote hii inakuwezesha kuweka kidole chako kwenye pigo la mchakato wa maendeleo, kwa kusema.

Chanzo: mapenzi.com

Kuongeza maoni