RxSwift и съпрограмми в Kotlin - избираем курс по мобилно развитие от AGIMA и GeekBrains

RxSwift и съпрограмми в Kotlin - избираем курс по мобилно развитие от AGIMA и GeekBrains

Знанието е добро, просто страхотно. Но е необходима и практика, за да можете да използвате получените данни, като ги прехвърлите от състояние „пасивно съхранение“ в състояние „активно използване“. Колкото и да е добра теоретичната подготовка, все пак се изисква работа „на терен“. Горното се отнася за почти всяка област на обучение, включително, разбира се, разработка на софтуер.

Тази година GeekBrains, като част от факултета за мобилно развитие на онлайн университета GeekUniversity, започна да работи с интерактивната агенция AGIMA, чийто екип са професионални разработчици (те създават сложни проекти с високо натоварване, корпоративни портали и мобилни приложения, това е всичко). AGIMA и GeekBrains създадоха факултет за дълбоко потапяне в практическите въпроси на разработката на мобилни приложения.

Онзи ден разговаряхме с Игор Веденеев, специалист по iOS, и Александър Тизик, специалист по Android. Благодарение на тях факультативът по мобилно развитие се обогати с практически специален курс за рамката RxSwift и съпрограмми в Kotlin. В тази статия разработчиците говорят за важността на всяка област за програмистите.

Реактивно програмиране в iOS с помощта на RxSwift като пример

RxSwift и съпрограмми в Kotlin - избираем курс по мобилно развитие от AGIMA и GeekBrains
Избираем учител Игор Веденеев: „С RxSwift вашето приложение ще лети“

Каква информация получават учениците по време на избираемия курс?

Говорим не само за възможностите на рамката, но и показваме как да я използваме в класическата комбинация MVVM + RxSwift. Обсъждат се и няколко практически примера. За да консолидираме получените данни, ние пишем приложение, което е възможно най-близко до условията на работа на място. Това ще бъде приложение за търсене на музика, използващо API за търсене в iTunes. Там ще приложим всички най-добри практики, плюс ще разгледаме по-проста опция за използване на RxSwift в MVC парадигмата.

RxSwift - защо iOS програмистът се нуждае от тази рамка, как улеснява живота на програмиста?

RxSwift рационализира работата с потоци от събития и връзки между обекти. Най-простият и очевиден пример са обвързванията: например можете да актуализирате интерфейса, като просто зададете нови стойности в променлива в viewModel. Така интерфейсът става управляван от данни. Освен това RxSwift ви позволява да опишете системата в декларативен стил, което ви позволява да организирате кода си и да увеличите четливостта. Всичко това помага за по-ефективното разработване на приложения.

За разработчика познаването на рамката също е добър плюс в автобиографията, тъй като разбирането на реактивното програмиране и особено опитът с RxSwift се оценяват на пазара.

Защо да изберете точно тази рамка пред други?

RxSwift има най-голямата общност. Тоест има по-голям шанс проблемът, пред който е изправен разработчикът, вече да е решен от някого. Също така голям брой подвързии извън кутията. Освен това RxSwift е част от ReactiveX. Това означава, че има аналог за Android например (RxJava, RxKotlin) и колегите в работилницата могат да говорят на един език помежду си, въпреки факта, че някои работят с iOS, други с Android.

Рамката се актуализира непрекъснато, дребните грешки се коригират, добавя се поддръжка за функции от новите версии на Swift и се добавят нови обвързвания. Тъй като RxSwift е с отворен код, можете да следвате всички промени. Освен това е възможно да ги добавите сами.

Къде трябва да се използва RxSwift?

  1. Подвързии. Като правило говорим за потребителския интерфейс, възможността да промените потребителския интерфейс, сякаш реагирайки на промените в данните, а не изрично да казвате на интерфейса, че е време за актуализиране.
  2. Връзка между компоненти и операции. Само пример. Трябва да получим списък с данни от мрежата. Всъщност това не е толкова проста операция. За да направите това, трябва да изпратите заявка, да картографирате отговора в масив от обекти, да го запишете в базата данни и да го изпратите до потребителския интерфейс. Като правило различни компоненти са отговорни за извършването на тези операции (ние обичаме и следваме принципите SOLID?). Имайки инструмент като RxSwift под ръка, става възможно да се опише КАКВО ще прави системата и КАК ще го прави това ще бъде на други места. Благодарение на това се постига по-добра организация на кода и се повишава четливостта. Относително казано, кодът може да бъде разделен на съдържание и самата книга.

Корутини в Kotlin

RxSwift и съпрограмми в Kotlin - избираем курс по мобилно развитие от AGIMA и GeekBrains
Учителят по избираем курс Александър Тизик: „Съвременното развитие изисква съвременни технически средства“

Какво ще се преподава във факултета на GeekBrains като част от брандираното тримесечие?

Теория, сравнения с други подходи, практически примери в чист Kotlin и в модела на Android приложение. Що се отнася до практиката, на учениците ще бъде показано приложение, в което всичко е обвързано с корутини. Факт е, че повечето приложения са напълно асинхронни и паралелни изчисления. Но съпрограммите на Kotlin позволяват объркващ, хетерогенен или прекалено сложен и изискващ производителност код да бъде намален до един, лесен за разбиране стил, печелейки предимства при правилно изпълнение и производителност.

Ще се научим да пишем идиоматичен код в съпрограмми, който решава практически проблеми и е разбираем на пръв поглед дори без задълбочени познания за това как работят съпрограммите (което не може да се каже за библиотеки като RxJava). Ще разберем също как да използваме по-сложни концепции, като модела на актьора, за решаване на по-сложни проблеми, като хранилището на данни в концепцията MVI.

Между другото, още добри новини. Докато избираемият предмет се записваше, беше пусната актуализация на библиотеката Kotlin Coroutines, в която се появи класът Flow - аналог на видовете Flowable и Observable от RxJava. Актуализацията по същество прави сърутинните функции завършени от гледна точка на разработчика на приложението. Вярно е, че все още има място за подобрение: въпреки факта, че благодарение на поддръжката на съпрограмми в kotlin/native, вече е възможно да се пишат мултиплатформени приложения в Kotlin и да не се страда от липсата на RxJava или аналози в чист Kotlin, поддръжката за съпрограмми в kotlin/native все още не е завършена. Например, няма понятие за актьори. Като цяло екипът на Kotlin има планове да поддържа по-сложни актьори на всички платформи.

Kotlin Coroutines - как те помагат на разработчик на Kotlin?

Съпрограмите предоставят чудесна възможност за писане на код, който е четим, поддържан и сигурен, асинхронен и паралелен. Можете също да създадете адаптери за други асинхронни рамки и подходи, които може вече да се използват в кодовата база.

Как се различават корутините от нишките?

Екипът на Kotlin нарича корутините леки нишки. Плюс това съпрограмата може да върне някаква стойност, защото в основата си съпрограмата е преустановено изчисление. Не зависи директно от системните нишки; нишките изпълняват само съпрограми.

Какви практически проблеми могат да бъдат решени с помощта на Coroutine, които не могат или са трудни за решаване с помощта на „чист“ Kotlin?

Всички асинхронни, паралелни, „конкурентни“ задачи се решават добре с помощта на съпрограми – било то обработка на потребителски щраквания, влизане онлайн или абониране за актуализации от база данни.

В чистия Kotlin тези проблеми се решават по същия начин, както в Java - с помощта на хиляди рамки, всяка от които има своите плюсове и минуси, но нито една от тях няма поддръжка на езиково ниво.

Като заключение си струва да се каже, че и двете избираеми (както и основните курсове) се актуализират в съответствие с промените във външните условия. Ако се появят важни актуализации на езици или рамки, учителите вземат това предвид и променят програмата. Всичко това ви позволява да държите пръста си на пулса на процеса на разработка, така да се каже.

Източник: www.habr.com

Добавяне на нов коментар