RxSwift සහ Kotlin හි coroutines - AGIMA සහ GeekBrains වෙතින් ජංගම සංවර්ධනය සඳහා තෝරා ගැනීමකි

RxSwift සහ Kotlin හි coroutines - AGIMA සහ GeekBrains වෙතින් ජංගම සංවර්ධනය සඳහා තෝරා ගැනීමකි

දැනුම හොඳයි, විශිෂ්ටයි. නමුත් ඔබට ලැබුණු දත්ත "නිෂ්ක්‍රීය ආචයනය" තත්ත්වයෙන් "ක්‍රියාකාරී භාවිතය" තත්ත්වයට මාරු කිරීම සඳහා භාවිතා කළ හැකි වන පරිදි පුහුණුවීම් ද අවශ්‍ය වේ. න්යායික පුහුණුව කොතරම් හොඳ වුවත්, "ක්ෂේත්රයේ" වැඩ කිරීම තවමත් අවශ්ය වේ. ඉහත සඳහන් දේ මෘදුකාංග සංවර්ධනය ඇතුළුව ඕනෑම අධ්‍යයන ක්ෂේත්‍රයකට පාහේ අදාළ වේ.

මෙම වසරේ, GeekBrains, මාර්ගගත විශ්ව විද්‍යාලය GeekUniversity හි ජංගම සංවර්ධන පීඨයේ කොටසක් ලෙස, අන්තර්ක්‍රියාකාරී ඒජන්සියක් වන AGIMA සමඟ වැඩ කිරීමට පටන් ගත් අතර, එහි කණ්ඩායම වෘත්තීය සංවර්ධකයින් වේ (ඔවුන් සංකීර්ණ අධි බර ව්‍යාපෘති, ආයතනික ද්වාර සහ ජංගම යෙදුම් නිර්මාණය කරයි, එපමණයි). AGIMA සහ GeekBrains ජංගම යෙදුම් සංවර්ධනයේ ප්‍රායෝගික ගැටළු ගැඹුරින් කිමිදීම සඳහා තේරීමක් නිර්මාණය කර ඇත.

පසුගිය දිනක අපි iOS විශේෂඥයෙකු වන Igor Vedeneev සහ Android හි විශේෂඥ ඇලෙක්සැන්ඩර් ටිසික් සමඟ කතා කළෙමු. ඔවුන්ට ස්තූතියි, ජංගම සංවර්ධනය පිළිබඳ තේරීම ප්‍රායෝගිකව පොහොසත් විය RxSwift රාමුව පිළිබඳ විශේෂ පාඨමාලාව и කොට්ලින් හි coroutines. මෙම ලිපියෙන්, සංවර්ධකයින් වැඩසටහන්කරුවන් සඳහා එක් එක් ප්රදේශයේ වැදගත්කම ගැන කතා කරයි.

උදාහරණයක් ලෙස RxSwift භාවිතා කරමින් iOS හි ප්‍රතික්‍රියාශීලී වැඩසටහන්කරණය

RxSwift සහ Kotlin හි coroutines - AGIMA සහ GeekBrains වෙතින් ජංගම සංවර්ධනය සඳහා තෝරා ගැනීමකි
තේරී පත් වූ ගුරුවරයා වන ඊගෝර් වෙදනීව්: "RxSwift සමඟින්, ඔබගේ අයදුම්පත පියාසර කරනු ඇත"

තෝරාගැනීමේදී සිසුන්ට ලැබෙන තොරතුරු මොනවාද?

අපි රාමුවේ හැකියාවන් ගැන පමණක් නොව, සම්භාව්ය MVVM + RxSwift සංයෝජනයෙන් එය භාවිතා කරන්නේ කෙසේදැයි පෙන්වමු. ප්‍රායෝගික උදාහරණ කිහිපයක් ද සාකච්ඡා කෙරේ. ලබාගත් දත්ත ඒකාබද්ධ කිරීම සඳහා, අපි ක්ෂේත්‍ර මෙහෙයුම් තත්වයන්ට හැකි තරම් සමීප යෙදුමක් ලියන්නෙමු. මෙය භාවිතා කරන සංගීත සෙවුම් යෙදුමක් වනු ඇත iTunes සෙවුම් API. එහිදී අපි සියලු හොඳම පිළිවෙත් යොදන්නෙමු, තවද MVC සුසමාදර්ශය තුළ RxSwift භාවිතා කිරීම සඳහා සරල විකල්පයක් සලකා බලමු.

RxSwift - iOS ක්‍රමලේඛකයෙකුට මෙම රාමුව අවශ්‍ය වන්නේ ඇයි, එය සංවර්ධකයෙකුට ජීවිතය පහසු කරන්නේ කෙසේද?

RxSwift streamlines සිද්ධි ප්‍රවාහයන් සහ වස්තූන් අතර සම්බන්ධතා සමඟ ක්‍රියා කරයි. සරලම සහ වඩාත්ම පැහැදිලි උදාහරණය බන්ධන වේ: උදාහරණයක් ලෙස, viewModel හි විචල්‍යයක නව අගයන් සැකසීමෙන් ඔබට අතුරු මුහුණත යාවත්කාලීන කළ හැකිය. මේ අනුව, අතුරු මුහුණත දත්ත මත පදනම් වේ. මීට අමතරව, RxSwift මඟින් පද්ධතිය ප්‍රකාශන ශෛලියකින් විස්තර කිරීමට ඔබට ඉඩ සලසයි, එමඟින් ඔබේ කේතය සංවිධානය කිරීමට සහ කියවීමේ හැකියාව වැඩි කිරීමට ඔබට ඉඩ සලසයි. මේ සියල්ල යෙදුම් වඩාත් කාර්යක්ෂමව සංවර්ධනය කිරීමට උපකාරී වේ.

සංවර්ධකයෙකු සඳහා, ප්‍රතික්‍රියාශීලී ක්‍රමලේඛනය පිළිබඳ අවබෝධයක් සහ විශේෂයෙන් RxSwift සමඟ අත්දැකීම් වෙළඳපොලේ අගය කරන බැවින්, රාමුව පිළිබඳ දැනුම නැවත ආරම්භයේ හොඳ ප්ලස් වේ.

මෙම විශේෂිත රාමුව අන් අයට වඩා තෝරා ගන්නේ ඇයි?

RxSwift විශාලතම ප්රජාව ඇත. එනම්, සංවර්ධකයා මුහුණ දෙන ගැටලුව දැනටමත් යමෙකු විසින් විසඳා ඇති බවට වැඩි අවස්ථාවක් තිබේ. එසේම කොටුවෙන් පිටත බන්ධන විශාල සංඛ්යාවක්. එපමණක් නොව, RxSwift ReactiveX හි කොටසකි. මෙයින් අදහස් කරන්නේ ඇන්ඩ්‍රොයිඩ් සඳහා ප්‍රතිසමයක් ඇති බවයි, උදාහරණයක් ලෙස (RxJava, RxKotlin), සහ වැඩමුළුවේ සිටින සගයන්ට එකිනෙකා සමඟ එකම භාෂාව කතා කළ හැකිය, සමහරක් iOS සමඟ, අනෙක් අය Android සමඟ වැඩ කළත්.

රාමුව නිරන්තරයෙන් යාවත්කාලීන වේ, සුළු දෝෂ නිවැරදි කරනු ලැබේ, Swift හි නව අනුවාද වලින් විශේෂාංග සඳහා සහය එකතු කරනු ලැබේ, සහ නව බැඳීම් එකතු කරනු ලැබේ. RxSwift විවෘත මූලාශ්‍රයක් බැවින්, ඔබට සියලු වෙනස්කම් අනුගමනය කළ හැකිය. එපමණක්ද නොව, ඒවා ඔබම එකතු කළ හැකිය.

RxSwift භාවිතා කළ යුත්තේ කොතැනින්ද?

  1. බැඳීම්. රීතියක් ලෙස, අපි කතා කරන්නේ UI, UI වෙනස් කිරීමේ හැකියාව, දත්ත වෙනස්වීම් වලට ප්‍රතිචාර දක්වනවාක් මෙන්, සහ යාවත්කාලීන කිරීමට කාලය පැමිණ ඇති බව අතුරු මුහුණතට පැහැදිලිව නොකියයි.
  2. සංරචක සහ මෙහෙයුම් අතර සම්බන්ධතාවය. උදාහරණයක් විතරයි. අපි ජාලයෙන් දත්ත ලැයිස්තුවක් ලබා ගත යුතුයි. ඇත්ත වශයෙන්ම, මෙය එතරම් සරල මෙහෙයුමක් නොවේ. මෙය සිදු කිරීම සඳහා, ඔබට ඉල්ලීමක් යැවීම, ප්‍රතිචාරය වස්තු සමූහයකට සිතියම්ගත කිරීම, දත්ත සමුදාය වෙත සුරැකීම සහ UI වෙත යැවිය යුතුය. රීතියක් ලෙස, මෙම මෙහෙයුම් සිදු කිරීම සඳහා විවිධ සංරචක වගකිව යුතුය (අපි ආදරය සහ මූලධර්ම අනුගමනය කරන්නෙමු ඝණ?). RxSwift වැනි මෙවලමක් අතේ තිබීම, පද්ධතිය කුමක් කරන්නේද යන්න විස්තර කිරීමට හැකි වේ, සහ එය කරන්නේ කෙසේද යන්න වෙනත් ස්ථානවල වනු ඇත. කේතයේ වඩා හොඳ සංවිධානයක් සාක්ෂාත් කර ගැනීම සහ කියවීමේ හැකියාව වැඩි වීම මේ නිසා ය. සාපේක්ෂ වශයෙන්, කේතය පටුන සහ පොතට බෙදිය හැකිය.

කොට්ලින් හි කොරූටීන්

RxSwift සහ Kotlin හි coroutines - AGIMA සහ GeekBrains වෙතින් ජංගම සංවර්ධනය සඳහා තෝරා ගැනීමකි
තේරීම් පාඨමාලා ගුරුවරයා වන ඇලෙක්සැන්ඩර් ටිසික්: "නවීන සංවර්ධනය සඳහා නවීන තාක්ෂණික ක්රම අවශ්ය වේ"

සන්නාමගත කාර්තුවේ කොටසක් ලෙස GeekBrains පීඨයේ උගන්වනු ලබන්නේ කුමක්ද?

න්‍යාය, වෙනත් ප්‍රවේශයන් සමඟ සැසඳීම්, පිරිසිදු කොට්ලින් සහ ඇන්ඩ්‍රොයිඩ් යෙදුම් ආකෘතියේ ප්‍රායෝගික උදාහරණ. පුහුණුව සම්බන්ධයෙන් ගත් කල, සිසුන්ට සෑම දෙයක්ම coroutines සමඟ බැඳී ඇති යෙදුමක් පෙන්වනු ලැබේ. කාරණය නම් බොහෝ යෙදුම් සම්පූර්ණයෙන්ම අසමමිතික සහ සමාන්තර පරිගණනයකි. නමුත් Kotlin coroutines මඟින් ව්‍යාකූල, විෂම හෝ අධික ලෙස සංකීර්ණ සහ කාර්ය සාධනය ඉල්ලා සිටින කේතය තනි, තේරුම් ගැනීමට පහසු ශෛලියකට අඩු කිරීමට ඉඩ සලසයි, නිවැරදි ක්‍රියාත්මක කිරීම සහ කාර්ය සාධනය තුළ ප්‍රතිලාභ ලබා ගනී.

coroutines ක්‍රියා කරන ආකාරය ගැන ගැඹුරු දැනුමක් නොමැති වුවද (RxJava වැනි පුස්තකාල ගැන කිව නොහැක) ප්‍රායෝගික ගැටළු විසඳන සහ බැලූ බැල්මට තේරුම් ගත හැකි idiomatic code ලිවීමට අපි ඉගෙන ගනිමු. MVI සංකල්පයේ ඇති දත්ත ගබඩාව වැනි වඩාත් සංකීර්ණ ගැටළු විසඳීම සඳහා නළු ආකෘතිය වැනි වඩාත් සංකීර්ණ සංකල්ප භාවිතා කරන්නේ කෙසේදැයි අපි තේරුම් ගනිමු.

මාර්ගය වන විට, තවත් හොඳ ආරංචියක්. තේරීම පටිගත කරන අතරතුර, Kotlin Coroutines පුස්තකාලයට යාවත්කාලීනයක් නිකුත් කරන ලද අතර, එහි පන්තිය දර්ශනය විය. Flow - වර්ගවල ඇනෙලොග් Flowable и Observable RxJava වෙතින්. යාවත්කාලීන කිරීම යෙදුම් සංවර්ධකයාගේ දෘෂ්ටි කෝණයෙන් coroutines විශේෂාංගය සම්පූර්ණ කරයි. ඇත්ත, වැඩිදියුණු කිරීමට තවමත් ඉඩ තිබේ: kotlin/native වල coroutines හි සහයෝගයට ස්තූතිවන්ත වන නමුත්, Kotlin හි බහු-වේදිකා යෙදුම් ලිවීමට දැනටමත් හැකි වන අතර RxJava හෝ පිරිසිදු Kotlin හි ප්‍රතිසම නොමැති වීමෙන් පීඩා විඳින්නේ නැත. kotlin/native හි coroutines සඳහා සහය තවමත් සම්පූර්ණ නැත. උදාහරණයක් ලෙස නළු නිළියන් පිළිබඳ සංකල්පයක් නැත. පොදුවේ ගත් කල, සියලුම වේදිකාවල වඩාත් සංකීර්ණ නළුවන්ට සහාය වීමට Kotlin කණ්ඩායම සැලසුම් කර ඇත.

Kotlin Coroutines - ඔවුන් Kotlin සංවර්ධකයෙකුට උදව් කරන්නේ කෙසේද?

කියවිය හැකි, නඩත්තු කළ හැකි සහ ආරක්ෂිත, අසමමුහුර්ත සහ සමගාමී කේතය ලිවීමට Coroutines හොඳ අවස්ථාවක් සපයයි. ඔබට දැනටමත් කේත පදනමේ භාවිතා කළ හැකි වෙනත් අසමමුහුර්ත රාමු සහ ප්‍රවේශයන් සඳහා ඇඩප්ටර සෑදිය හැක.

Coroutines නූල් වලට වඩා වෙනස් වන්නේ කෙසේද?

Kotlin කණ්ඩායම coroutines සැහැල්ලු නූල් ලෙස හඳුන්වයි. තවද, coroutine එකකට යම් අගයක් ලබා දිය හැක, මන්ද, එහි හරය ලෙස, coroutine යනු අත්හිටුවන ලද ගණනය කිරීමකි. එය සෘජුවම පද්ධති නූල් මත රඳා නොපවතී; නූල් පමණක් coroutines ක්රියාත්මක කරයි.

"පිරිසිදු" Kotlin භාවිතයෙන් විසඳිය නොහැකි හෝ විසඳීමට අපහසු Coroutine භාවිතයෙන් විසඳිය හැකි ප්‍රායෝගික ගැටළු මොනවාද?

ඕනෑම අසමමුහුර්ත, සමාන්තර, “තරඟකාරී” කාර්යයන් coroutines භාවිතයෙන් හොඳින් විසඳනු ලැබේ - එය පරිශීලක ක්ලික් කිරීම් සැකසීම, සබැඳිව යාම හෝ දත්ත සමුදායකින් යාවත්කාලීන කිරීම් සඳහා දායක වීම.

පිරිසිදු කොට්ලින් වලදී, මෙම ගැටළු ජාවා හි මෙන් ම විසඳනු ලැබේ - රාමු දහස් ගණනක ආධාරයෙන්, ඒ සෑම එකක්ම තමන්ගේම වාසි සහ අවාසි ඇත, නමුත් ඒ කිසිවකට භාෂා මට්ටමේ සහාය නොමැත.

අවසාන වශයෙන්, තේරීම් දෙකම (සහ ප්‍රධාන පා courses මාලා ද) බාහිර තත්වයන්හි වෙනස්කම් වලට අනුකූලව යාවත්කාලීන කරන බව පැවසීම වටී. වැදගත් යාවත්කාලීන කිරීම් භාෂා හෝ රාමු තුළ දිස්වන්නේ නම්, ගුරුවරුන් මෙය සැලකිල්ලට ගෙන වැඩසටහන වෙනස් කරයි. මේ සියල්ල ඔබට කතා කිරීමට, සංවර්ධන ක්රියාවලියේ ස්පන්දනය මත ඔබේ ඇඟිල්ල තබා ගැනීමට ඉඩ සලසයි.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න