RxSwift at mga coroutine sa Kotlin - isang elective sa mobile development mula sa AGIMA at GeekBrains

RxSwift at mga coroutine sa Kotlin - isang elective sa mobile development mula sa AGIMA at GeekBrains

Ang kaalaman ay mabuti, napakahusay. Ngunit kailangan din ang pagsasanay upang magamit mo ang natanggap na data, ilipat ang mga ito mula sa katayuang "passive storage" patungo sa status na "aktibong paggamit". Gaano man kahusay ang teoretikal na pagsasanay, kailangan pa rin ang trabaho "sa larangan". Nalalapat ang nasa itaas sa halos anumang larangan ng pag-aaral, kabilang ang, siyempre, pagbuo ng software.

Ngayong taon, ang GeekBrains, bilang bahagi ng mobile development faculty ng online na unibersidad na GeekUniversity, ay nagsimulang magtrabaho kasama ang interactive na ahensyang AGIMA, na ang koponan ay mga propesyonal na developer (lumikha sila ng mga kumplikadong proyektong may mataas na load, corporate portal at mobile application, iyon lang). Ang AGIMA at GeekBrains ay lumikha ng isang elective para sa isang malalim na pagsisid sa mga praktikal na isyu ng pagbuo ng mobile application.

Noong isang araw, nakausap namin sina Igor Vedeneev, isang iOS specialist, at Alexander Tizik, na dalubhasa sa Android. Salamat sa kanila, ang elective sa mobile development ay pinayaman ng praktikal espesyal na kurso sa RxSwift framework ΠΈ coroutine sa Kotlin. Sa artikulong ito, pinag-uusapan ng mga developer ang kahalagahan ng bawat lugar para sa mga programmer.

Reaktibong programming sa iOS gamit ang RxSwift bilang isang halimbawa

RxSwift at mga coroutine sa Kotlin - isang elective sa mobile development mula sa AGIMA at GeekBrains
Ang elektibong guro na si Igor Vedeneev: "Sa RxSwift, lilipad ang iyong aplikasyon"

Anong impormasyon ang natatanggap ng mga mag-aaral sa panahon ng elective?

Pinag-uusapan natin hindi lamang ang tungkol sa mga kakayahan ng balangkas, ngunit ipinapakita din kung paano ito gamitin sa klasikong kumbinasyon ng MVVM + RxSwift. Tinalakay din ang ilang praktikal na halimbawa. Upang pagsama-samahin ang data na nakuha, sumulat kami ng isang application na mas malapit hangga't maaari sa mga kondisyon ng pagpapatakbo ng field. Ito ay magiging isang application ng paghahanap ng musika gamit iTunes Search API. Doon namin ilalapat ang lahat ng Pinakamahusay na Kasanayan, at isaalang-alang ang isang mas simpleng opsyon para sa paggamit ng RxSwift sa paradigm ng MVC.

RxSwift - bakit kailangan ng isang iOS programmer ang framework na ito, paano nito ginagawang mas madali ang buhay para sa isang developer?

Gumagana ang mga streamline ng RxSwift sa mga stream ng kaganapan at mga koneksyon sa pagitan ng mga bagay. Ang pinakasimpleng at pinaka-halatang halimbawa ay ang mga binding: halimbawa, maaari mong i-update ang interface sa pamamagitan lamang ng pagtatakda ng mga bagong halaga sa isang variable sa viewModel. Kaya, ang interface ay nagiging data-driven. Bilang karagdagan, pinapayagan ka ng RxSwift na ilarawan ang system sa istilong deklaratibo, na nagbibigay-daan sa iyong ayusin ang iyong code at dagdagan ang pagiging madaling mabasa. Ang lahat ng ito ay nakakatulong upang bumuo ng mga application nang mas mahusay.

Para sa isang developer, ang kaalaman sa framework ay isa ring magandang plus sa isang resume, dahil ang pag-unawa sa reaktibong programming, at lalo na ang karanasan sa RxSwift, ay pinahahalagahan sa merkado.

Bakit pipiliin ang partikular na balangkas na ito kaysa sa iba?

Ang RxSwift ang may pinakamalaking komunidad. Ibig sabihin, mas malaki ang posibilidad na ang problemang kinakaharap ng developer ay nalutas na ng isang tao. Gayundin ang isang malaking bilang ng mga bindings sa labas ng kahon. Bukod dito, ang RxSwift ay bahagi ng ReactiveX. Nangangahulugan ito na mayroong isang analogue para sa Android, halimbawa (RxJava, RxKotlin), at ang mga kasamahan sa workshop ay maaaring magsalita ng parehong wika sa isa't isa, sa kabila ng katotohanan na ang ilan ay gumagana sa iOS, ang iba sa Android.

Patuloy na ina-update ang framework, itinatama ang mga menor de edad na bug, idinaragdag ang suporta para sa mga feature mula sa mga bagong bersyon ng Swift, at idinaragdag ang mga bagong binding. Dahil ang RxSwift ay open source, maaari mong sundin ang lahat ng mga pagbabago. Bukod dito, posible na idagdag ang mga ito sa iyong sarili.

Saan dapat gamitin ang RxSwift?

  1. Mga binding. Bilang panuntunan, pinag-uusapan natin ang tungkol sa UI, ang kakayahang baguhin ang UI, na parang tumutugon sa mga pagbabago sa data, at hindi tahasang sinasabi sa interface na oras na para mag-update.
  2. Relasyon sa pagitan ng mga bahagi at pagpapatakbo. Halimbawa na lang. Kailangan nating kumuha ng listahan ng data mula sa network. Sa katunayan, hindi ito isang simpleng operasyon. Upang gawin ito, kailangan mong magpadala ng kahilingan, i-map ang tugon sa isang hanay ng mga bagay, i-save ito sa database at ipadala ito sa UI. Bilang isang tuntunin, iba't ibang bahagi ang may pananagutan sa pagsasagawa ng mga operasyong ito (mahal at sinusunod namin ang mga prinsipyo Matatag?). Ang pagkakaroon ng tool tulad ng RxSwift sa kamay, nagiging posible na ilarawan kung ANO ang gagawin ng system, at PAANO ito gagawin sa ibang mga lugar. Ito ay dahil dito na ang mas mahusay na organisasyon ng code ay nakakamit at ang pagiging madaling mabasa ay tumataas. Sa relatibong pagsasalita, ang code ay maaaring hatiin sa isang talaan ng mga nilalaman at ang aklat mismo.

Mga Coroutine sa Kotlin

RxSwift at mga coroutine sa Kotlin - isang elective sa mobile development mula sa AGIMA at GeekBrains
Ang guro ng elektibong kurso na si Alexander Tizik: "Ang modernong pag-unlad ay nangangailangan ng mga modernong teknikal na paraan"

Ano ang ituturo sa GeekBrains faculty bilang bahagi ng branded quarter?

Teorya, paghahambing sa iba pang mga diskarte, praktikal na mga halimbawa sa purong Kotlin at sa modelo ng Android application. Tulad ng para sa pagsasanay, ang mga mag-aaral ay ipapakita ng isang aplikasyon kung saan ang lahat ay nakatali sa mga coroutine. Ang katotohanan ay ang karamihan sa mga application ay ganap na asynchronous at parallel computing. Ngunit ang Kotlin coroutine ay nagbibigay-daan sa nakakalito, magkakaibang o sobrang kumplikado at hinihingi ng pagganap na code na bawasan sa isang solong istilong madaling maunawaan, na nakakakuha ng mga benepisyo sa tamang pagpapatupad at pagganap.

Matututo tayong sumulat ng idiomatic code sa mga coroutine na lumulutas sa mga praktikal na problema at naiintindihan sa unang tingin kahit na walang malalim na kaalaman sa kung paano gumagana ang mga coroutine (na hindi masasabi tungkol sa mga aklatan tulad ng RxJava). Mauunawaan din namin kung paano gumamit ng mas kumplikadong mga konsepto, tulad ng modelo ng aktor, upang malutas ang mas kumplikadong mga problema, tulad ng data warehouse sa konsepto ng MVI.

By the way, mas magandang balita. Habang nire-record ang elective, isang update sa Kotlin Coroutines library ang inilabas, kung saan lumabas ang klase Flow - analogue ng mga uri Flowable ΠΈ Observable mula sa RxJava. Ang pag-update ay mahalagang ginagawang kumpleto ang feature ng coroutine mula sa pananaw ng developer ng application. Totoo, mayroon pa ring puwang para sa pagpapabuti: sa kabila ng katotohanan na salamat sa suporta ng mga coroutine sa kotlin/native, posible nang magsulat ng mga multi-platform na application sa Kotlin at hindi magdusa mula sa kakulangan ng RxJava o mga analogue sa purong Kotlin, hindi pa kumpleto ang suporta para sa mga coroutine sa kotlin/native. Halimbawa, walang konsepto ng mga aktor. Sa pangkalahatan, may mga plano ang Kotlin team na suportahan ang mas kumplikadong mga aktor sa lahat ng platform.

Kotlin Coroutines - paano sila nakakatulong sa isang developer ng Kotlin?

Ang mga Coroutine ay nagbibigay ng magandang pagkakataon na magsulat ng code na nababasa, napanatili, at secure, asynchronous, at concurrency. Maaari ka ring gumawa ng mga adapter para sa iba pang mga asynchronous na framework at approach na maaaring magamit na sa codebase.

Paano naiiba ang Coroutine sa mga thread?

Tinatawag ng Kotlin team ang mga coroutine na magaan na mga thread. Dagdag pa, ang isang coroutine ay maaaring magbalik ng ilang halaga, dahil, sa pangunahing nito, ang isang coroutine ay isang nasuspinde na pagkalkula. Hindi ito direktang nakadepende sa mga thread ng system; ang mga thread ay nagpapatupad lamang ng mga coroutine.

Anong mga praktikal na problema ang maaaring lutasin gamit ang Coroutine, na hindi o mahirap lutasin gamit ang "purong" Kotlin?

Ang anumang asynchronous, parallel, "competitive" na mga gawain ay mahusay na nalutas gamit ang mga coroutine - ito man ay pagproseso ng mga pag-click ng user, pag-online, o pag-subscribe sa mga update mula sa isang database.

Sa purong Kotlin, ang mga problemang ito ay nalutas sa parehong paraan tulad ng sa Java - sa tulong ng libu-libong mga balangkas, na ang bawat isa ay may sariling mga kalamangan at kahinaan, ngunit wala sa kanila ang may suporta sa antas ng wika.

Bilang konklusyon, nararapat na sabihin na ang parehong mga elective (at ang mga pangunahing kurso din) ay ina-update alinsunod sa mga pagbabago sa mga panlabas na kondisyon. Kung lalabas ang mahahalagang update sa mga wika o balangkas, isinasaalang-alang ito ng mga guro at binabago ang programa. Ang lahat ng ito ay nagbibigay-daan sa iyo upang panatilihin ang iyong daliri sa pulso ng proseso ng pag-unlad, upang magsalita.

Pinagmulan: www.habr.com

Magdagdag ng komento