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

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

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

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

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

برنامه نویسی واکنشی در iOS با استفاده از RxSwift به عنوان مثال

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

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

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

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

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

برای یک توسعه‌دهنده، دانش چارچوب نیز امتیاز خوبی در رزومه است، زیرا درک برنامه‌نویسی واکنش‌گرا، و به‌ویژه تجربه با RxSwift، در بازار ارزشمند است.

چرا این چارچوب خاص را نسبت به سایرین انتخاب کنید؟

RxSwift بزرگترین انجمن را دارد. یعنی احتمال بیشتری وجود دارد که مشکلی که توسعه‌دهنده با آن مواجه است توسط شخصی حل شده باشد. همچنین تعداد زیادی صحافی خارج از جعبه. علاوه بر این، RxSwift بخشی از ReactiveX است. این بدان معناست که یک آنالوگ برای آندروید، به عنوان مثال (RxJava، RxKotlin) وجود دارد و همکاران در کارگاه می توانند با یکدیگر به یک زبان صحبت کنند، علیرغم اینکه برخی با iOS و برخی دیگر با اندروید کار می کنند.

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

در کجا باید از RxSwift استفاده کرد؟

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

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

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

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

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

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

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

Kotlin Coroutines - چگونه به یک توسعه دهنده Kotlin کمک می کنند؟

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

Coroutine ها چه تفاوتی با Thread ها دارند؟

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

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

هر کار ناهمزمان، موازی، «رقابتی» به خوبی با استفاده از برنامه‌های مشترک حل می‌شود - خواه پردازش کلیک‌های کاربر، آنلاین شدن، یا اشتراک به‌روزرسانی‌های یک پایگاه داده.

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

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

منبع: www.habr.com

اضافه کردن نظر