Kotlindagi RxSwift va koroutinlar - AGIMA va GeekBrains-dan mobil rivojlanish bo'yicha tanlov.

Kotlindagi RxSwift va koroutinlar - AGIMA va GeekBrains-dan mobil rivojlanish bo'yicha tanlov.

Bilim yaxshi, shunchaki ajoyib. Qabul qilingan ma'lumotlarni "passiv saqlash" holatidan "faol foydalanish" holatiga o'tkazish uchun foydalanishingiz uchun amaliyot ham kerak. Nazariy tayyorgarlik qanchalik yaxshi bo'lmasin, "dalada" ishlash hali ham talab qilinadi. Yuqorida aytilganlar deyarli har qanday ta'lim sohasiga, jumladan, dasturiy ta'minotni ishlab chiqishga ham tegishli.

Bu yil GeekBrains, GeekUniversity onlayn universitetining mobil rivojlanish fakulteti tarkibida professional dasturchilar jamoasi bo'lgan AGIMA interaktiv agentligi bilan ishlay boshladi (ular murakkab yuqori yuklangan loyihalar, korporativ portallar va mobil ilovalarni yaratadilar, hammasi). AGIMA va GeekBrains mobil ilovalarni ishlab chiqishning amaliy masalalarini chuqur o'rganish uchun tanlov yaratdilar.

Boshqa kuni biz iOS bo'yicha mutaxassis Igor Vedeneev va Android tizimiga ixtisoslashgan Aleksandr Tizik bilan suhbatlashdik. Ularning sharofati bilan mobil aloqani rivojlantirish bo'yicha fakultet amaliy mashg'ulotlar bilan boyidi RxSwift doirasidagi maxsus kurs ΠΈ Kotlindagi koroutinlar. Ushbu maqolada ishlab chiquvchilar dasturchilar uchun har bir sohaning ahamiyati haqida gapiradilar.

Misol sifatida RxSwift-dan foydalangan holda iOS-da reaktiv dasturlash

Kotlindagi RxSwift va koroutinlar - AGIMA va GeekBrains-dan mobil rivojlanish bo'yicha tanlov.
Tanlangan o'qituvchi Igor Vedeneev: "RxSwift bilan sizning arizangiz uchib ketadi"

Tanlov jarayonida talabalar qanday ma'lumotlarni oladi?

Biz nafaqat ramkaning imkoniyatlari haqida gapiramiz, balki uni klassik MVVM + RxSwift kombinatsiyasida qanday ishlatishni ham ko'rsatamiz. Bir nechta amaliy misollar ham muhokama qilinadi. Olingan ma'lumotlarni birlashtirish uchun biz dala ish sharoitlariga iloji boricha yaqinroq bo'lgan dastur yozamiz. Bu musiqa qidirish ilovasidan foydalangan holda bo'ladi iTunes qidiruvi API. U erda biz barcha eng yaxshi amaliyotlarni qo'llaymiz, shuningdek, MVC paradigmasida RxSwift-dan foydalanishning oddiy variantini ko'rib chiqamiz.

RxSwift - nima uchun iOS dasturchisiga ushbu ramka kerak, bu dasturchining hayotini qanday osonlashtiradi?

RxSwift oqimlari hodisalar oqimi va ob'ektlar orasidagi ulanishlar bilan ishlaydi. Eng oddiy va eng aniq misol - bu bog'lash: masalan, viewModel-dagi o'zgaruvchiga yangi qiymatlarni o'rnatish orqali interfeysni yangilashingiz mumkin. Shunday qilib, interfeys ma'lumotlarga asoslangan bo'ladi. Bundan tashqari, RxSwift tizimni deklarativ uslubda tavsiflash imkonini beradi, bu sizning kodingizni tartibga solish va o'qishni oshirish imkonini beradi. Bularning barchasi ilovalarni yanada samarali ishlab chiqishga yordam beradi.

Ishlab chiquvchi uchun ramkani bilish ham rezyume uchun yaxshi plyusdir, chunki reaktiv dasturlashni tushunish va ayniqsa RxSwift bilan tajriba bozorda qadrlanadi.

Nima uchun boshqalardan ko'ra ushbu maxsus ramkani tanlash kerak?

RxSwift eng katta jamoaga ega. Ya'ni, ishlab chiquvchi duch keladigan muammo allaqachon kimdir tomonidan hal qilingan bo'lishi ehtimoli katta. Shuningdek, qutidan ko'p sonli bog'lashlar. Bundan tashqari, RxSwift ReactiveX ning bir qismidir. Bu shuni anglatadiki, Android uchun analog mavjud, masalan (RxJava, RxKotlin) va ustaxonadagi hamkasblar, ba'zilari iOS, boshqalari Android bilan ishlashiga qaramay, bir-birlari bilan bir xil tilda gaplasha oladilar.

Ramka doimiy ravishda yangilanadi, kichik xatolar tuzatiladi, Swift-ning yangi versiyalaridagi xususiyatlarni qo'llab-quvvatlash qo'shiladi va yangi bog'lanishlar qo'shiladi. RxSwift ochiq manba bo'lgani uchun siz barcha o'zgarishlarni kuzatishingiz mumkin. Bundan tashqari, ularni o'zingiz qo'shishingiz mumkin.

RxSwift qayerda ishlatilishi kerak?

  1. Bog'lashlar. Qoidaga ko'ra, biz UI haqida gapiramiz, UI-ni o'zgartirish qobiliyati, go'yo ma'lumotlar o'zgarishiga munosabat bildiradi va interfeysga yangilash vaqti kelganligini aniq aytmaydi.
  2. Komponentlar va operatsiyalar o'rtasidagi bog'liqlik. Faqat bir misol. Biz tarmoqdan ma'lumotlar ro'yxatini olishimiz kerak. Aslida, bu juda oddiy operatsiya emas. Buning uchun siz so'rov yuborishingiz, javobni ob'ektlar massiviga joylashtirishingiz, ma'lumotlar bazasiga saqlashingiz va UIga yuborishingiz kerak. Qoidaga ko'ra, ushbu operatsiyalarni bajarish uchun turli komponentlar javobgardir (biz sevamiz va printsiplarga amal qilamiz SOLID?). Qo'lingizda RxSwift kabi vositaga ega bo'lsangiz, tizim NIMA qilishini va boshqa joylarda buni QANDAY bajarishini tasvirlash mumkin bo'ladi. Buning natijasida kodni yaxshiroq tashkil etishga erishiladi va o'qilishi ortadi. Nisbatan aytganda, kodni mundarijaga va kitobning o'ziga bo'lish mumkin.

Kotlindagi koroutinlar

Kotlindagi RxSwift va koroutinlar - AGIMA va GeekBrains-dan mobil rivojlanish bo'yicha tanlov.
Tanlov kursi o'qituvchisi Aleksandr Tizik: "Zamonaviy rivojlanish zamonaviy texnik vositalarni talab qiladi"

Brendli chorak doirasida GeekBrains fakultetida nima o'rgatiladi?

Nazariya, boshqa yondashuvlar bilan taqqoslash, sof Kotlin va Android ilova modelidagi amaliy misollar. Amaliyotga kelsak, talabalarga hamma narsa koroutinlar bilan bog'langan dastur ko'rsatiladi. Gap shundaki, ko'pgina ilovalar butunlay asinxron va parallel hisoblashdir. Ammo Kotlin koroutinlari chalkash, heterojen yoki o'ta murakkab va unumdorlikni talab qiluvchi kodni yagona, tushunarli uslubga qisqartirish imkonini beradi, bu esa to'g'ri bajarish va ishlashda foyda keltiradi.

Biz amaliy masalalarni hal qiladigan va bir qarashda tushunarli bo'lgan koroutinlarda idiomatik kod yozishni o'rganamiz, hatto koroutinlar qanday ishlashini chuqur bilmasdan ham (buni RxJava kabi kutubxonalar haqida aytib bo'lmaydi). Shuningdek, biz MVI kontseptsiyasidagi ma'lumotlar ombori kabi murakkabroq muammolarni hal qilish uchun aktyor modeli kabi murakkabroq tushunchalardan qanday foydalanishni tushunamiz.

Aytgancha, yana yaxshi yangiliklar. Tanlov yozilayotganda, Kotlin Coroutines kutubxonasi yangilanishi chiqdi, unda sinf paydo bo'ldi. Flow - turlarning analogi Flowable ΠΈ Observable RxJava'dan. Yangilanish asosan dastur ishlab chiquvchisi nuqtai nazaridan koroutinlar funksiyasini toβ€˜liq qiladi. To'g'ri, hali ham yaxshilanish uchun joy bor: kotlin/native-da koroutinlarni qo'llab-quvvatlash tufayli allaqachon Kotlin-da ko'p platformali ilovalarni yozish mumkin va RxJava yoki sof Kotlin-dagi analoglar etishmasligidan aziyat chekmaslik mumkin, kotlin/native-da koroutinlarni qo'llab-quvvatlash hali to'liq emas. Masalan, aktyorlar tushunchasi mavjud emas. Umuman olganda, Kotlin jamoasi barcha platformalarda yanada murakkab aktyorlarni qo'llab-quvvatlashni rejalashtirmoqda.

Kotlin Coroutines - ular Kotlin dasturchisiga qanday yordam beradi?

Koroutinlar o'qilishi mumkin bo'lgan, saqlanishi mumkin bo'lgan va xavfsiz, asinxron va parallel kod yozish uchun ajoyib imkoniyat beradi. Bundan tashqari, kodlar bazasida allaqachon ishlatilishi mumkin bo'lgan boshqa asinxron ramkalar va yondashuvlar uchun adapterlarni yaratishingiz mumkin.

Coroutines iplardan qanday farq qiladi?

Kotlin jamoasi koroutinlarni engil iplar deb ataydi. Bundan tashqari, koroutin ba'zi qiymatlarni qaytarishi mumkin, chunki uning mohiyatida koroutin to'xtatilgan hisobdir. U to'g'ridan-to'g'ri tizim iplariga bog'liq emas; iplar faqat koroutinlarni bajaradi.

Koroutin yordamida qanday amaliy muammolarni hal qilish mumkin, ularni "sof" Kotlin yordamida hal qilish mumkin emas yoki qiyin?

Har qanday asinxron, parallel, "raqobatbardosh" vazifalar koroutinlar yordamida yaxshi hal qilinadi - u foydalanuvchi kliklarini qayta ishlash, onlayn rejimga o'tish yoki ma'lumotlar bazasidan yangilanishlarga obuna bo'lish.

Sof Kotlinda bu muammolar xuddi Java-da bo'lgani kabi - minglab ramkalar yordamida hal qilinadi, ularning har biri o'zining ijobiy va salbiy tomonlariga ega, ammo ularning hech biri til darajasida qo'llab-quvvatlanmaydi.

Xulosa sifatida shuni aytish kerakki, har ikkala tanlov (va asosiy kurslar ham) tashqi sharoitlarning o'zgarishiga qarab yangilanadi. Agar muhim yangilanishlar tillarda yoki ramkalarda paydo bo'lsa, o'qituvchilar buni hisobga oladi va dasturni o'zgartiradi. Bularning barchasi barmog'ingizni rivojlanish jarayonining yurak urish tezligida ushlab turishga imkon beradi.

Manba: www.habr.com

a Izoh qo'shish