Kotlin дахь RxSwift ба coroutines - AGIMA болон GeekBrains-ийн гар утасны хөгжүүлэлтийн сонгон шалгаруулалт

Kotlin дахь RxSwift ба coroutines - AGIMA болон GeekBrains-ийн гар утасны хөгжүүлэлтийн сонгон шалгаруулалт

Мэдлэг сайн, зүгээр л агуу. Гэхдээ хүлээн авсан өгөгдлийг ашиглаж, "идэвхгүй хадгалах" төлөвөөс "идэвхтэй хэрэглээ" рүү шилжүүлэхийн тулд дадлага хийх шаардлагатай. Хичнээн сайн онолын сургалт байсан ч "талбарт" ажиллах шаардлагатай хэвээр байна. Дээр дурьдсан зүйл нь мэдээжийн хэрэг програм хангамж хөгжүүлэх зэрэг бараг бүх чиглэлээр суралцахад хамаарна.

Энэ жил GeekBrains нь онлайн их сургуулийн GeekUniversity-ийн гар утасны хөгжлийн факультетийн нэг хэсэг болох AGIMA интерактив агентлагтай хамтран ажиллаж эхэлсэн бөгөөд түүний баг нь мэргэжлийн хөгжүүлэгчид юм (тэдгээр нь өндөр ачаалалтай төслүүд, корпорацийн порталууд болон гар утасны програмуудыг бий болгодог, энэ бүгд). AGIMA болон GeekBrains нар гар утасны програм хөгжүүлэх практик асуудлуудыг гүнзгий судлах сонгон шалгаруулалтыг бий болгосон.

Өнгөрсөн өдөр бид iOS-ийн мэргэжилтэн Игорь Веденеев, Android үйлдлийн системээр мэргэшсэн Александр Тизик нартай ярилцлаа. Тэдний ачаар гар утасны хөгжлийн сонгон шалгаруулалтыг практик зүйлээр баяжуулсан RxSwift хүрээний тусгай курс и Котлин дахь корутинууд. Энэ нийтлэлд хөгжүүлэгчид програмистуудын хувьд талбар бүрийн ач холбогдлын талаар ярих болно.

Жишээ болгон RxSwift ашиглан iOS дээрх реактив програмчлал

Kotlin дахь RxSwift ба coroutines - AGIMA болон GeekBrains-ийн гар утасны хөгжүүлэлтийн сонгон шалгаруулалт
Сонгон шалгаруулалтын багш Игорь Веденеев: "RxSwift-ийн тусламжтайгаар таны програм нисэх болно"

Сонгон шалгаруулалтын явцад оюутнууд ямар мэдээлэл авдаг вэ?

Бид зөвхөн хүрээний боломжуудын талаар ярихаас гадна сонгодог MVVM + RxSwift хослол дээр хэрхэн ашиглахыг харуулдаг. Мөн хэд хэдэн практик жишээг авч үзсэн болно. Хүлээн авсан өгөгдлийг нэгтгэхийн тулд бид талбайн ашиглалтын нөхцөлд аль болох ойрхон програм бичдэг. Энэ нь хөгжмийн хайлтын программ байх болно iTunes хайлтын API. Тэнд бид бүх шилдэг туршлагуудыг ашиглахаас гадна MVC парадигмд RxSwift ашиглах хялбар сонголтыг авч үзэх болно.

RxSwift - iOS программист яагаад энэ хүрээ хэрэгтэй вэ, энэ нь хөгжүүлэгчийн амьдралыг хэрхэн хөнгөвчлөх вэ?

RxSwift-ийн оновчтой арга нь үйл явдлын урсгал болон объектуудын хоорондын холболттой ажилладаг. Хамгийн энгийн бөгөөд хамгийн тод жишээ бол холболтууд юм: жишээлбэл, та viewModel дахь хувьсагчийн шинэ утгыг тохируулах замаар интерфейсийг шинэчлэх боломжтой. Тиймээс интерфэйс нь өгөгдөлд тулгуурладаг. Нэмж дурдахад RxSwift нь системийг тунхаглалын хэв маягаар дүрслэх боломжийг олгодог бөгөөд энэ нь кодыг цэгцлэх, унших чадварыг нэмэгдүүлэх боломжийг олгодог. Энэ бүхэн нь програмуудыг илүү үр дүнтэй хөгжүүлэхэд тусалдаг.

Хөгжүүлэгчийн хувьд реактив програмчлалын талаархи ойлголт, ялангуяа RxSwift-ийн туршлага зах зээлд үнэлэгддэг тул хүрээний талаархи мэдлэг нь анкет дээр бас сайн зүйл юм.

Яагаад бусдаас илүү энэ хүрээг сонгосон бэ?

RxSwift нь хамгийн том нийгэмлэгтэй. Өөрөөр хэлбэл, хөгжүүлэгчийн өмнө тулгараад байгаа асуудлыг хэн нэгэн аль хэдийн шийдсэн байх магадлал өндөр байна. Мөн хайрцагнаас олон тооны бэхэлгээ. Түүнээс гадна RxSwift нь ReactiveX-ийн нэг хэсэг юм. Энэ нь Android-д зориулсан аналог байдаг, жишээлбэл (RxJava, RxKotlin) бөгөөд зарим нь iOS, бусад нь Android-тэй ажилладаг ч семинарт байгаа хамт олон хоорондоо ижил хэлээр ярьж чаддаг гэсэн үг юм.

Хүрээг байнга шинэчилж, жижиг алдаануудыг засч, Swift-ийн шинэ хувилбаруудын функцүүдийн дэмжлэг нэмэгдэж, шинэ холболтууд нэмэгддэг. RxSwift нь нээлттэй эх сурвалж учраас та бүх өөрчлөлтийг дагаж болно. Түүнээс гадна тэдгээрийг өөрөө нэмэх боломжтой.

RxSwift хаана ашиглах ёстой вэ?

  1. Холболт. Дүрмээр бол бид UI, өгөгдлийн өөрчлөлтөд хариу үйлдэл үзүүлэх мэт UI-г өөрчлөх чадварын тухай ярьж байгаа бөгөөд интерфэйсийг шинэчлэх цаг болсныг тодорхой хэлээгүй болно.
  2. Бүрэлдэхүүн хэсэг ба үйл ажиллагааны хоорондын хамаарал. Зүгээр л жишээ. Бид сүлжээнээс өгөгдлийн жагсаалтыг авах хэрэгтэй. Үнэндээ энэ бол тийм ч энгийн ажиллагаа биш юм. Үүнийг хийхийн тулд та хүсэлт илгээж, хариултыг объектын массиваар буулгаж, мэдээллийн санд хадгалж, UI руу илгээх хэрэгтэй. Дүрмээр бол өөр өөр бүрэлдэхүүн хэсгүүд нь эдгээр үйлдлийг гүйцэтгэх үүрэгтэй (бид зарчмуудыг хайрлаж, дагаж мөрддөг Солид?). RxSwift гэх мэт хэрэгсэл гартаа байгаа тул энэ систем ЮУ хийх, ХЭРХЭН хийхийг бусад газруудад тайлбарлах боломжтой болно. Үүний ачаар кодын илүү сайн зохион байгуулалтад хүрч, унших чадвар нэмэгддэг. Харьцангуйгаар кодыг агуулгын хүснэгт болон ном гэж хувааж болно.

Котлин дахь корутинууд

Kotlin дахь RxSwift ба coroutines - AGIMA болон GeekBrains-ийн гар утасны хөгжүүлэлтийн сонгон шалгаруулалт
Сонгон хичээлийн багш Александр Тизик: "Орчин үеийн хөгжил нь орчин үеийн техникийн хэрэгслийг шаарддаг"

Брэнд улирлын хүрээнд GeekBrains факультетэд юу заах вэ?

Онол, бусад аргуудтай харьцуулах, цэвэр Котлин болон Android програмын загвар дахь практик жишээ. Практикийн хувьд оюутнуудад бүх зүйл корутинтай холбоотой програмыг үзүүлэх болно. Баримт нь ихэнх програмууд нь бүрэн асинхрон, зэрэгцээ тооцоолол юм. Гэхдээ Котлин корутинууд нь төөрөгдүүлсэн, нэг төрлийн эсвэл хэт төвөгтэй, гүйцэтгэл шаардсан кодыг нэг, ойлгоход хялбар хэв маяг болгон бууруулж, зөв ​​гүйцэтгэл, гүйцэтгэлийн давуу талыг олж авах боломжийг олгодог.

Бид корутинууд хэрхэн ажилладаг талаар гүнзгий мэдлэггүй байсан ч (RxJava гэх мэт номын сангуудын талаар хэлэх боломжгүй) практик асуудлуудыг шийддэг, анх харахад ойлгомжтой хэлц код бичиж сурах болно. MVI үзэл баримтлал дахь өгөгдлийн агуулах гэх мэт илүү төвөгтэй асуудлыг шийдвэрлэхийн тулд бид жүжигчний загвар гэх мэт илүү төвөгтэй ойлголтуудыг хэрхэн ашиглахыг ойлгох болно.

Дашрамд хэлэхэд илүү сайн мэдээ байна. Сонгон шалгаруулалтыг бичиж байх хооронд Kotlin Coroutines номын сангийн шинэчлэл гарсан бөгөөд үүнд анги гарч ирэв. Flow - төрлийн аналог Flowable и Observable RxJava-аас. Шинэчлэлт нь үндсэндээ програм хөгжүүлэгчийн үүднээс coroutines функцийг бүрэн гүйцэд болгодог. Үнэн, сайжруулах боломж байсаар байна: хэдийгээр kotlin/native хэл дээрх coroutines-ийн дэмжлэгийн ачаар Котлин дээр олон платформын програмуудыг бичих боломжтой болсон бөгөөд RxJava эсвэл цэвэр Котлин дахь аналогийн дутагдалд орохгүй. kotlin/native дахь coroutines-ийн дэмжлэг хараахан дуусаагүй байна. Тухайлбал, жүжигчид гэдэг ойлголт байхгүй. Ерөнхийдөө Котлин баг бүх платформ дээр илүү төвөгтэй жүжигчдийг дэмжих төлөвлөгөөтэй байна.

Kotlin Coroutines - тэд Kotlin хөгжүүлэгчид хэрхэн тусалдаг вэ?

Coroutines нь унших боломжтой, хадгалах боломжтой, аюулгүй, асинхрон, зэрэгцээ код бичих сайхан боломжийг олгодог. Та кодын санд аль хэдийн ашиглагдаж болох бусад асинхрон хүрээ, хандлагуудад адаптер үүсгэж болно.

Корутинууд утаснуудаас юугаараа ялгаатай вэ?

Котлин баг нь корутинуудыг хөнгөн утас гэж нэрлэдэг. Дээрээс нь корутин нь зарим утгыг буцааж чадна, учир нь үндсэндээ корутин нь түр зогсоосон тооцоолол юм. Энэ нь системийн урсгалаас шууд хамаардаггүй, урсгалууд нь зөвхөн корутинуудыг гүйцэтгэдэг.

"Цэвэр" Котлиныг ашиглан шийдвэрлэх боломжгүй эсвэл шийдвэрлэхэд хэцүү ямар практик асуудлыг Coroutine ашиглан шийдэж болох вэ?

Аливаа асинхрон, зэрэгцээ, "өрсөлдөөнт" ажлуудыг корутин ашиглан сайн шийддэг - энэ нь хэрэглэгчийн товшилтыг боловсруулах, онлайн болох эсвэл мэдээллийн сангаас шинэчлэлтийг захиалах гэх мэт.

Цэвэр Котлин дээр эдгээр асуудлыг Java-ийн нэгэн адил шийддэг - мянга мянган хүрээний тусламжтайгаар тус бүр өөрийн гэсэн давуу болон сул талуудтай боловч тэдгээрийн аль нь ч хэлний түвшний дэмжлэггүй байдаг.

Дүгнэж хэлэхэд сонголтын хичээлүүд (мөн үндсэн хичээлүүд) гадаад нөхцөл байдлын өөрчлөлтийн дагуу шинэчлэгдэж байгааг хэлэх нь зүйтэй болов уу. Хэрэв чухал шинэчлэлтүүд хэл эсвэл хүрээн дээр гарч ирвэл багш нар үүнийг анхаарч, програмыг өөрчилдөг. Энэ бүхэн нь хөгжлийн үйл явцын импульс дээр хуруугаа барих боломжийг олгодог.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх