RxSwift і каруціны ў Kotlin – факультатыў па мабільнай распрацоўцы ад AGIMA і GeekBrains

RxSwift і каруціны ў Kotlin – факультатыў па мабільнай распрацоўцы ад AGIMA і GeekBrains

Веды - гэта добра, проста выдатна. Але патрэбна яшчэ і практыка, каб можна было выкарыстоўваць атрыманыя дадзеныя, перавядучы іх са статусу "пасіўнае захоўванне" ў статус "актыўнае выкарыстанне". Якім бы добрым ні было тэарэтычнае навучанне, патрабуецца яшчэ праца "ў полі". Сказанае датычыцца практычна любой сферы навучання, уключаючы, вядома ж, распрацоўку ПЗ.

Сёлета GeekBrains у рамках факультэта анлайн-універсітэта GeekUniversity па мабільнай распрацоўцы пачаў працаваць з інтэрактыўным агенцтвам AGIMA, каманда якога — прафесійныя распрацоўшчыкі (робяць складаныя высоканагружаныя праекты, карпаратыўныя парталы і мабільныя прыкладанні, вось гэта ўсё). AGIMA і GeekBrains стварылі факультатыў для глыбокага апускання ў практычныя пытанні распрацоўкі мабільных прыкладанняў.

На днях мы пагаварылі з Ігарам Ведзенеевым, адмыслоўцам па iOS, і Аляксандрам Тызікам, якія спецыялізуюцца на Android. Дзякуючы ім факультатыў па мабільнай распрацоўцы ўзбагаціўся практычным спецкурсам па фрэймворку RxSwift и каруцінам у Kotlin. У гэтым артыкуле распрацоўшчыкі расказваюць аб важнасці кожнага напрамку для праграмістаў.

Рэактыўнае праграмаванне ў iOS на прыкладзе RxSwift

RxSwift і каруціны ў Kotlin – факультатыў па мабільнай распрацоўцы ад AGIMA і GeekBrains
Выкладчык факультатыва Ігар Ведзянееў: «C RxSwift ваша прыкладанне будзе лётаць»

Якую інфармацыю атрымліваюць студэнты на факультатыве?

Мы распавядаем не толькі пра магчымасці фрэймворка, але і паказваем, як яго ўжываць у класічным звязку MVVM + RxSwift. Таксама разглядаецца некалькі практычных прыкладаў. Для замацавання атрыманых дадзеных пішам дадатак, максімальна набліжанае да палявых умоў працы. Гэта будзе дадатак пошуку музыкі з дапамогай iTunes Search API. Там мы прыменім усе Best Practices, плюс разгледзім прасцейшы варыянт выкарыстання RxSwift у парадыгме MVC.

RxSwift – навошта гэты фрэймворк iOS-праграмісту, як ён палягчае жыццё распрацоўніку?

RxSwift парадкуе працу з струменямі падзей і сувязямі паміж аб'ектамі. Самы просты і відавочны прыклад - гэта біндынгі: напрыклад, можна абнаўляць інтэрфейс, проста ўсталяваўшы новыя значэнне ў зменную ва viewModel. Такім чынам, інтэрфейс робіцца data-driven. Акрамя таго, RxSwift дазваляе апісваць сістэму ў дэкларатыўным стылі, што дазваляе ўпарадкаваць код і павысіць чытальнасць. Усё гэта дапамагае больш эфектыўна распрацоўваць прыкладанні.

Для распрацоўніка веданне фреймворка – гэта яшчэ і добры плюс у рэзюмэ, паколькі разуменне рэактыўнага праграмавання, і асабліва досвед з RxSwift, шануюцца на рынку.

Чаму варта абраць менавіта гэты фрэймворк, а не іншыя?

У RxSwift самая вялікая супольнасць. Гэта значыць, больш шанцаў, што праблема, з якой сутыкаецца распрацоўшчык, ужо кімсьці вырашана. Таксама вялікая колькасць біндзінгаў са скрынкі. Больш за тое, RxSwift – частка ReactiveX. Гэта значыць, што ёсць аналаг для Android, напрыклад (RxJava, RxKotlin), а калегі па цэху могуць размаўляць адзін з адным на адной мове, нягледзячы на ​​тое, што адны працуюць з iOS, іншыя – з Android.

Фрэймворк увесь час абнаўляецца, выпраўляюцца дробныя недахопы, дадаецца падтрымка фішак з новых версій Swift, дадаюцца новыя біндынгі. Паколькі RxSwift апенсорсны, можна сачыць за ўсімі зменамі. Больш за тое, ёсць магчымасць дадаваць іх самому.

Дзе варта прымяняць RxSwift?

  1. Біндзінгі. Як правіла, тут гаворка ідзе пра UI, магчымасць змяняць UI, як бы рэагуючы на ​​змены дадзеных, а не відавочна кажучы інтэрфейсу, што сітавіна абнавіцца.
  2. Сувязь кампанентаў і аперацый. Адразу прыклад. Нам трэба атрымаць спіс звестак з сеткі. Насамрэч, гэта не такая простая аперацыя. Для гэтага трэба адправіць запыт, змапіць адказ у масіў аб'ектаў, захаваць яго ў базу дадзеных і аддаць яго ў UI. Адказваюць за выкананне гэтых аперацый, як правіла, розныя кампаненты (мы ж мы любім і прытрымліваемся прынцыпаў Цвёрдыя?). Маючы пад рукой такая прылада, як RxSwift, з'яўляецца магчымасць апісваць, ШТО будзе рабіць сістэма, а ЯК яна будзе гэта рабіць – будзе знаходзіцца ў іншых месцах. Менавіта за кошт гэтага дасягаецца лепшая арганізацыя кода і павялічваецца чытальнасць. Умоўна кажучы, код можна падзяліць на змест і саму кнігу.

Каруціны ў Kotlin

RxSwift і каруціны ў Kotlin – факультатыў па мабільнай распрацоўцы ад AGIMA і GeekBrains
Выкладчык факультатыва Аляксандр Цізік: "Сучасная распрацоўка патрабуе сучасных тэхнічных сродкаў"

Што будзе выкладацца на факультэце GeekBrains у рамках брэндаванай чвэрці?

Тэорыя, параўнанні з іншымі падыходамі, практычныя прыклады ў чыстым Kotlin і ў мадэлі Android-дадатку. Што да практыкі, то студэнтам будзе дэманстравацца дадатак, у якім усё завязана на coroutines. Справа ў тым, што большасць прыкладанняў - суцэльныя асінхронныя і паралельныя вылічэнні. А вось каруціны Kotlin дазваляюць заблытаны, разнастайны ці залішне складаны і патрабавальны па прадукцыйнасці код звесці да адзінага, простага для разумення стылю, атрымаўшы выйгрыш у карэктнасці выканання і прадукцыйнасці.

Мы навучымся пісаць ідыяматычны код на каруцінах, які вырашае практычныя задачы і зразумелы з першага погляду нават без глыбокіх ведаў таго, як уладкованыя каруціны (што нельга сказаць пра такія бібліятэкі, як RxJava). Таксама зразумеем, як выкарыстоўваць канцэпцыі больш складана, напрыклад мадэль акцёраў, для вырашэння больш складаных задач, такіх як сховішча дадзеных у канцэпцыі MVI.

Дарэчы, яшчэ добрая навіна. Пакуль запісваўся факультатыў, выйшла абнаўленне бібліятэкі Kotlin Coroutines, у якім з'явіўся клас Flow - аналаг тыпаў Flowable и Observable з RxJava. Абнаўленне, па сутнасці, робіць каруціны feature complete з пункту гледжання распрацоўшчыка прыкладанняў. Праўда, і развівацца пакуль яшчэ ёсць куды: нягледзячы на ​​тое, што дзякуючы падтрымцы каруцін у kotlin/native ужо можна пісаць мультыплатформенныя прыкладанні на Kotlin і не пакутаваць ад адсутнасці RxJava ці аналагаў у чыстым Kotlin, падтрымка каруцін у kotlin/native яшчэ не поўная. Напрыклад, няма канцэпцыі акцёраў. У цэлым, у каманды Kotlin варта ў планах зрабіць падтрымку больш складаных акцёраў на ўсіх платформах.

Kotlin Coroutines – чым яны дапамагаюць распрацоўніку Kotlin?

Каруціны даюць выдатную магчымасць пісаць чытэльны, які падтрымліваецца і бяспечны, асінхронны і «канкурэнтны» (concurrency) код. Таксама можна ствараць адаптары пад іншыя асінхронныя фрэймворкі і падыходы, якія ўжо могуць выкарыстоўвацца ў кодавай базе.

Чым Coroutines адрозніваюцца ад патокаў?

Каманда Kotlin называе каруціны легкаважнымі патокамі. Плюс да ўсяго, каруціна можа вяртаць нейкае значэнне, таму што, па сваёй сутнасці, каруціна - гэта вылічэнне, якое прыпыняецца. Яна не залежыць напрамую ад сістэмных патокаў, патокі толькі выконваюць каруціны.

Якія практычныя задачы можна вырашаць з выкарыстаннем Каруцін, якія нельга ці складана вырашаць пры дапамозе "чыстага" Kotlin?

Любыя асінхронныя, паралельныя, «канкурэнтныя» задачы добра вырашаюцца пры дапамозе каруцін – няхай гэта будзе апрацоўка націскаў ад карыстача, паход у сетку ці падпіска на абнаўленні з базы дадзеных.

У чыстым Kotlin гэтыя задачы вырашаюцца гэтак жа, як і ў Java - пры дапамозе тысячы фрэймворкаў, у кожнага з якіх ёсць свае плюсы і мінусы, але ніводны з іх не мае падтрымку на ўзроўні мовы.

У якасці высновы варта сказаць, што абодва факультатыва (ды і асноўныя курсы таксама) абнаўляюцца ў адпаведнасці са зменамі вонкавых умоў. Калі з'яўляюцца важныя абнаўленні ў мовах ці фрэймворках, выкладчыкі гэта ўлічваюць і мадыфікуюць праграму. Усё гэта дазваляе трымаць руку на пульсе працэсу распрацоўкі, калі так можна выказацца.

Крыніца: habr.com

Дадаць каментар