RxSwift ва корутинҳо дар Котлин - интихоби интихобӣ дар рушди мобилӣ аз AGIMA ва GeekBrains

RxSwift ва корутинҳо дар Котлин - интихоби интихобӣ дар рушди мобилӣ аз AGIMA ва GeekBrains

Дониш хуб аст, танҳо бузург аст. Аммо таҷриба инчунин лозим аст, ки шумо маълумоти гирифташударо истифода бурда, онҳоро аз ҳолати "нигоҳдории ғайрифаъол" ба ҳолати "истифодаи фаъол" интиқол диҳед. Тайёрии назариявй хар кадар хуб бошад хам, дар сахро кор кардан лозим аст. Дар боло тақрибан ба ҳама соҳаҳои таҳсил дахл дорад, аз ҷумла, албатта, таҳияи нармафзор.

Имсол GeekBrains, дар ҳайати факултаи рушди мобилии донишгоҳи онлайни GeekUniversity, кор бо агентии интерактивии AGIMA оғоз кард, ки дастаи он таҳиягарони касбӣ мебошанд (онҳо лоиҳаҳои мураккаби сербориш, порталҳои корпоративӣ ва замимаҳои мобилиро эҷод мекунанд, ҳамааш). AGIMA ва GeekBrains як фанни интихобӣ барои амиқ ба масъалаҳои амалии таҳияи барномаҳои мобилӣ эҷод кардаанд.

Рӯзи дигар мо бо Игор Веденеев, мутахассиси iOS ва Александр Тизик, ки мутахассиси Android аст, сӯҳбат кардем. Бо шарофати онҳо дарси интихобии рушди мобилӣ бо амалӣ ғанӣ гардонида шуд курси махсус дар чаҳорчӯбаи RxSwift и корутинҳо дар Котлин. Дар ин мақола таҳиягарон дар бораи аҳамияти ҳар як соҳа барои барномасозон сӯҳбат мекунанд.

Барномасозии реактивӣ дар iOS бо истифода аз RxSwift ҳамчун мисол

RxSwift ва корутинҳо дар Котлин - интихоби интихобӣ дар рушди мобилӣ аз 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. Пайвастшавӣ. Одатан, мо дар бораи UI, қобилияти тағир додани UI сухан меронем, гӯё ки ба тағирёбии маълумот вокуниш нишон дода, ба интерфейс возеҳ нагӯем, ки вақти навсозӣ расидааст.
  2. Муносибати байни ҷузъҳо ва амалиётҳо. Фақат мисол. Мо бояд рӯйхати маълумотро аз шабака гирем. Дар асл, ин як амалиёти оддӣ нест. Барои ин ба шумо лозим аст, ки дархост ирсол кунед, посухро ба як қатор объектҳо харита кунед, онро дар базаи маълумот захира кунед ва ба UI фиристед. Чун қоида, ҷузъҳои гуногун барои иҷрои ин амалиёт масъуланд (мо принсипҳоро дӯст медорем ва риоя мекунем SOLID?). Бо доштани асбобе ба монанди RxSwift, метавон тавсиф кард, ки система ЧИ кор хоҳад кард ва он дар ҷойҳои дигар чӣ гуна хоҳад буд. Махз ба туфайли хамин ташкили хуби кодхо ба даст оварда шуда, хониш баланд мешавад. Нисбатан, кодро метавон ба ҷадвали мундариҷа ва худи китоб тақсим кард.

Корутинҳо дар Котлин

RxSwift ва корутинҳо дар Котлин - интихоби интихобӣ дар рушди мобилӣ аз AGIMA ва GeekBrains
Муаллими курси интихобӣ Александр Тизик: "Рушди муосир воситаҳои техникии муосирро тақозо мекунад"

Дар факултаи GeekBrains дар чаҳорчӯбаи семоҳаи брендӣ чӣ таълим дода мешавад?

Назария, муқоиса бо равишҳои дигар, мисолҳои амалӣ дар Котлини пок ва дар модели барномаи Android. Дар мавриди амалия, ба донишҷӯён барномае нишон дода мешавад, ки дар он ҳама чиз ба корутинҳо алоқаманд аст. Гап дар он аст, ки аксари барномаҳо ҳисоббарории комилан асинхронӣ ва параллелӣ мебошанд. Аммо корутинҳои Котлин имкон медиҳанд, ки коди печида, гетерогенӣ ё аз ҳад зиёд мураккаб ва иҷроталабро ба як услуби ягона ва фаҳмо кам карда, дар иҷрои дуруст ва иҷрои онҳо бартариҳо ба даст оранд.

Мо навиштани коди идиоматикиро дар корутинҳо меомӯзем, ки мушкилоти амалиро ҳал мекунад ва дар назари аввал фаҳмо аст, ҳатто бидуни дониши амиқи корутинҳо (ки онро дар бораи китобхонаҳои монанди RxJava гуфтан мумкин нест). Мо инчунин мефаҳмем, ки чӣ тавр истифода бурдани мафҳумҳои мураккабтар, ба монанди модели актер, барои ҳалли мушкилоти мураккабтар, ба монанди анбори додаҳо дар консепсияи MVI.

Ба ҳар ҳол, хабари хуш бештар. Ҳангоми сабти фанни интихобӣ, навсозии китобхонаи Kotlin Coroutines бароварда шуд, ки дар он синф пайдо шуд Flow - аналоги намудҳо Flowable и Observable аз RxJava. Навсозӣ аслан хусусияти корутинҳоро аз нуқтаи назари таҳиягари барнома пурра мекунад. Дуруст аст, ки ҳанӯз ҳам ҷой барои такмил вуҷуд дорад: сарфи назар аз он, ки ба шарофати дастгирии корутинҳо дар Kotlin/native, аллакай имконпазир аст, ки замимаҳои бисёрплатформаро дар Kotlin навишт ва аз набудани RxJava ё аналогҳо дар Котлини пок ранҷ накашед, дастгирии корутинҳо дар котлин/нама ҳанӯз пурра нест. Масалан, мафхуми актёрхо вучуд надорад. Умуман, дастаи Котлин нақша дорад, ки фаъолони мураккабтарро дар ҳама платформаҳо дастгирӣ кунад.

Kotlin Coroutines - чӣ гуна онҳо ба таҳиягари Kotlin кӯмак мекунанд?

Корутинҳо имкони хуберо барои навиштани коди хониш, нигоҳдорӣ ва бехатар, асинхронӣ ва ҳамзамон таъмин мекунанд. Шумо инчунин метавонед созгорҳоро барои чаҳорчӯбаҳои асинхронӣ ва равишҳое созед, ки аллакай дар пойгоҳи код истифода мешаванд.

Корутинҳо аз риштаҳо чӣ фарқ доранд?

Дастаи Котлин корутинҳоро риштаҳои сабук меноманд. Илова бар ин, корутин метавонад баъзе арзишҳоро баргардонад, зеро дар асл, корутин ҳисобкунии боздошташуда мебошад. Он мустақиман аз риштаҳои система вобаста нест; риштаҳо танҳо корутинҳоро иҷро мекунанд.

Кадом масъалаҳои амалиро бо истифода аз Корутин ҳал кардан мумкин аст, ки онҳоро бо истифода аз Котлин "тоза" ҳал кардан мумкин нест ё душвор аст?

Ҳама гуна вазифаҳои асинхронӣ, мувозӣ, "рақобатпазир" бо истифода аз корутинҳо хуб ҳал карда мешаванд - хоҳ он коркарди кликҳои корбар, хоҳ ба интернет ё обуна ба навсозиҳо аз пойгоҳи додаҳо.

Дар Котлини холис, ин мушкилот ҳамон тавре, ки дар Java ҳал карда мешаванд - бо ёрии ҳазорҳо чаҳорчӯба, ки ҳар кадоми онҳо бартарӣ ва манфии худро доранд, аммо ҳеҷ яке аз онҳо дастгирии сатҳи забонро надорад.

Хулоса, бояд гуфт, ки ҳарду фанҳои интихобӣ (ва курсҳои асосӣ низ) мувофиқи тағйироти шароити беруна нав карда мешаванд. Агар навсозиҳои муҳим дар забонҳо ё чаҳорчӯба пайдо шаванд, муаллимон инро ба назар мегиранд ва барномаро тағир медиҳанд. Хамаи ин ба шумо имкон медихад, ки ангушти худро дар набзи процесси тараккиёт нигох доред, гуем.

Манбаъ: will.com

Илова Эзоҳ