RxSwift و coroutines در Kotlin - یک درس انتخابی در توسعه تلفن همراه از AGIMA و GeekBrains

RxSwift و coroutines در Kotlin - یک درس انتخابی در توسعه تلفن همراه از AGIMA و GeekBrains

دانش خوب است، عالی است. اما برای استفاده از داده‌های به دست آمده و تبدیل آنها از ذخیره‌سازی غیرفعال به استفاده فعال، به تمرین نیز نیاز است. مهم نیست آموزش نظری چقدر خوب باشد، کار میدانی نیز مورد نیاز است. این امر تقریباً در مورد هر زمینه تحصیلی، از جمله، البته، توسعه نرم‌افزار، صدق می‌کند.

امسال، GeekBrains، بخشی از دپارتمان توسعه موبایل دانشگاه آنلاین GeekUniversity، همکاری خود را با آژانس تعاملی AGIMA آغاز کرد که تیم آن متشکل از توسعه‌دهندگان حرفه‌ای است (که پروژه‌های پیچیده و پربار، پورتال‌های شرکتی و برنامه‌های موبایل را توسعه می‌دهند - هر چه که فکرش را بکنید). AGIMA و GeekBrains یک دوره اختیاری برای بررسی عمیق جنبه‌های عملی توسعه برنامه‌های موبایل ایجاد کردند.

اخیراً با ایگور ودنیف، متخصص iOS، و الکساندر تیزیک، متخصص در ... صحبت کردیم. Androidبه لطف آنها، دوره اختیاری توسعه موبایل با مطالب کاربردی غنی شده است. دوره ویژه آشنایی با فریم ورک RxSwift и کوروتین‌ها در کاتلیندر این مقاله، توسعه‌دهندگان در مورد اهمیت هر حوزه برای برنامه‌نویسان بحث می‌کنند.

برنامه‌نویسی واکنشی در iOS با RxSwift

RxSwift و coroutines در Kotlin - یک درس انتخابی در توسعه تلفن همراه از AGIMA و GeekBrains
ایگور ودنیف، مدرس دوره‌های اختیاری: «با RxSwift، اپلیکیشن شما به پرواز در خواهد آمد.»

دانش‌آموزان در طول دوره انتخابی چه اطلاعاتی دریافت می‌کنند؟

ما نه تنها قابلیت‌های این چارچوب را مورد بحث قرار می‌دهیم، بلکه نحوه استفاده از آن را در ترکیب کلاسیک MVVM + RxSwift نیز نشان می‌دهیم. همچنین چندین مثال عملی را بررسی می‌کنیم. برای تقویت یافته‌ها، برنامه‌ای می‌نویسیم که تا حد امکان به شرایط میدانی نزدیک باشد. این یک برنامه جستجوی موسیقی با استفاده از رابط برنامه‌نویسی جستجوی iTunesدر آنجا تمام بهترین شیوه‌ها را اعمال خواهیم کرد، به علاوه یک گزینه ساده‌تر برای استفاده از RxSwift در الگوی MVC را در نظر خواهیم گرفت.

RxSwift - چرا یک برنامه‌نویس iOS به این فریم‌ورک نیاز دارد و چگونه زندگی را برای توسعه‌دهندگان آسان‌تر می‌کند؟

RxSwift با جریان‌های رویداد و روابط بین اشیاء کار می‌کند. ساده‌ترین و واضح‌ترین مثال، اتصال‌ها است: برای مثال، می‌توانید یک رابط را با تنظیم یک مقدار جدید به یک متغیر در viewModel به‌روزرسانی کنید. این باعث می‌شود رابط داده‌محور باشد. علاوه بر این، RxSwift به شما امکان می‌دهد سیستم خود را به صورت اعلانی توصیف کنید، که کد را ساده کرده و خوانایی را بهبود می‌بخشد. همه اینها به شما کمک می‌کند تا برنامه‌های کاربردی را با کارایی بیشتری توسعه دهید.

برای یک توسعه‌دهنده، آشنایی با یک فریم‌ورک نیز یک امتیاز خوب در رزومه است، زیرا درک برنامه‌نویسی واکنشی و به خصوص تجربه کار با RxSwift در بازار ارزش دارد.

چرا این فریم‌ورک را به بقیه ترجیح دهیم؟

RxSwift بزرگترین جامعه را دارد. این بدان معناست که احتمال بیشتری وجود دارد که مشکلی که یک توسعه‌دهنده با آن مواجه است، قبلاً حل شده باشد. همچنین تعداد زیادی اتصال آماده (out-of-the-box bindings) دارد. علاوه بر این، RxSwift بخشی از ReactiveX است، به این معنی که معادلی برای آن وجود دارد. Androidبرای مثال (RxJava، RxKotlin) و همکاران حاضر در کارگاه می‌توانند با یکدیگر به یک زبان صحبت کنند، با وجود اینکه برخی با iOS و برخی دیگر با ... کار می‌کنند. Android.

این چارچوب دائماً به‌روزرسانی می‌شود، اشکالات جزئی برطرف می‌شوند، پشتیبانی از ویژگی‌های نسخه‌های جدید Swift اضافه می‌شود و اتصالات جدیدی اضافه می‌شود. از آنجایی که RxSwift متن‌باز است، می‌توانید تمام تغییرات را پیگیری کنید. علاوه بر این، حتی می‌توانید تغییرات خودتان را نیز ارائه دهید.

RxSwift کجا باید استفاده شود؟

  1. اتصال‌ها. معمولاً، این به رابط کاربری اشاره دارد، یعنی قابلیت تغییر رابط کاربری در پاسخ به تغییرات داده‌ها، به جای اینکه صریحاً به رابط کاربری گفته شود که به‌روزرسانی شود.
  2. رابطه بین کامپوننت‌ها و عملیات. بیایید یک مثال سریع بزنیم. ما باید لیستی از داده‌ها را از شبکه بازیابی کنیم. این یک عملیات ساده نیست. برای انجام این کار، باید یک درخواست ارسال کنیم، پاسخ را در آرایه‌ای از اشیاء نگاشت کنیم، آن را در پایگاه داده ذخیره کنیم و به رابط کاربری برگردانیم. این عملیات معمولاً توسط کامپوننت‌های مختلف انجام می‌شوند (ما، به هر حال، اصول ... را دوست داریم و از آنها پیروی می‌کنیم). جامد؟). با ابزاری مانند RxSwift در دسترس، می‌توان توصیف کرد که سیستم چه کاری انجام خواهد داد، در حالی که نحوه انجام آن در جای دیگری قرار خواهد گرفت. این امر امکان سازماندهی بهتر کد و افزایش خوانایی را فراهم می‌کند. به طور کلی، کد را می‌توان به یک فهرست مطالب و خود کتاب تقسیم کرد.

کوروتین‌ها در کاتلین

RxSwift و coroutines در Kotlin - یک درس انتخابی در توسعه تلفن همراه از AGIMA و GeekBrains
الکساندر تیزیک، مدرس دوره‌های انتخابی: «توسعه مدرن نیازمند ابزارهای فنی مدرن است.»

چه چیزهایی در طول دوره سه ماهه برندسازی شده در دانشکده GeekBrains تدریس خواهد شد؟

تئوری، مقایسه با سایر رویکردها، مثال‌های عملی در کاتلین خالص و در مدل Android- برنامه‌ها. در مورد آموزش عملی، به دانشجویان برنامه‌ای نشان داده می‌شود که کاملاً به کوروتین‌ها وابسته است. اکثر برنامه‌ها به شدت به محاسبات ناهمزمان و موازی متکی هستند. با این حال، کوروتین‌های کاتلین امکان فشرده‌سازی کدهای پیچیده، ناهمگن یا بیش از حد پیچیده و با عملکرد بالا را در یک سبک واحد و آسان برای درک فراهم می‌کنند و به بهبود صحت اجرا و عملکرد کمک می‌کنند.

ما یاد خواهیم گرفت که چگونه با کوروتین‌ها کد اصطلاحی بنویسیم که مسائل عملی را حل کند و در نگاه اول قابل فهم باشد، حتی بدون درک عمیق از کوروتین‌ها (که در مورد کتابخانه‌هایی مانند RxJava اینطور نیست). همچنین یاد خواهیم گرفت که چگونه از مفاهیم پیچیده‌تری مانند مدل بازیگر برای حل مسائل پیچیده‌تر مانند ذخیره‌سازی داده‌ها در چارچوب MVI استفاده کنیم.

راستی، یه خبر خوب دیگه هم دارم. وقتی داشتم بخش اختیاری رو ضبط می‌کردم، یه به‌روزرسانی برای کتابخانه‌ی Kotlin Coroutines منتشر شد که یه کلاس بهش اضافه شد. Flow - آنالوگ انواع Flowable и Observable از RxJava. این به‌روزرسانی اساساً ویژگی‌های کوروتین‌ها را از دیدگاه یک توسعه‌دهنده‌ی برنامه کامل می‌کند. با این حال، هنوز جای پیشرفت وجود دارد: با وجود پشتیبانی کوروتین در Kotlin/native که نوشتن برنامه‌های چند پلتفرمی Kotlin را بدون کمبود معادل‌های RxJava یا Native Kotlin امکان‌پذیر می‌کند، پشتیبانی کوروتین در Kotlin/native هنوز کامل نشده است. به عنوان مثال، مفهومی از Actorها وجود ندارد. در کل، تیم Kotlin قصد دارد از Actorهای پیچیده‌تری در تمام پلتفرم‌ها پشتیبانی کند.

کوروتین‌های کاتلین - چگونه به یک توسعه‌دهنده کاتلین کمک می‌کنند؟

کوروتین‌ها فرصت بسیار خوبی برای نوشتن کدهای ناهمزمان و همزمانی خوانا، قابل نگهداری و ایمن فراهم می‌کنند. همچنین می‌توان از آن‌ها برای ایجاد آداپتورهایی برای سایر چارچوب‌ها و رویکردهای ناهمزمان که از قبل در پایگاه کد استفاده می‌شوند، استفاده کرد.

کوروتین‌ها چه تفاوتی با نخ‌ها دارند؟

تیم کاتلین، کوروتین‌ها را رشته‌های سبک وزن می‌نامد. علاوه بر این، یک کوروتین می‌تواند مقداری را برگرداند زیرا در اصل، یک کوروتین یک محاسبه‌ی قابل تعلیق است. این به طور مستقیم به رشته‌های سیستم وابسته نیست؛ رشته‌ها فقط کوروتین‌ها را اجرا می‌کنند.

چه مشکلات عملی را می‌توان با استفاده از Coroutineها حل کرد، و کدام یک از آنها با استفاده از Kotlin «خالص» غیرممکن یا دشوار است؟

هر کار غیرهمزمان، موازی یا همزمان را می‌توان به راحتی با استفاده از کوروتین‌ها حل کرد - چه پردازش ورودی کاربر، دسترسی به شبکه یا اشتراک در به‌روزرسانی‌های پایگاه داده.

در کاتلین خالص، این مشکلات به همان روشی که در جاوا حل می‌شوند، با استفاده از هزاران فریم‌ورک حل می‌شوند که هر کدام مزایا و معایب خاص خود را دارند، اما هیچ‌کدام از آن‌ها پشتیبانی در سطح زبان را ندارند.

در پایان، شایان ذکر است که هر دو دروس اختیاری (و همچنین دروس اصلی) مطابق با تغییر شرایط خارجی به‌روزرسانی می‌شوند. اگر به‌روزرسانی‌های مهمی در زبان‌ها یا چارچوب‌ها ایجاد شود، مدرسان آنها را در نظر گرفته و برنامه را اصلاح می‌کنند. همه اینها به آنها اجازه می‌دهد تا از روند توسعه مطلع باشند.

منبع: www.habr.com

خرید هاست قابل اعتماد برای سایت های دارای حفاظت DDoS، سرورهای VPS VDS 🔥 خرید هاستینگ معتبر با محافظت در برابر حملات DDoS، سرورهای VPS و VDS | ProHoster