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 أكبر مجتمع. أي أن هناك احتمالًا أكبر أن المشكلة التي يواجهها المطور قد تم حلها بالفعل بواسطة شخص ما. أيضا عدد كبير من الارتباطات خارج منطقة الجزاء. علاوة على ذلك، يعد RxSwift جزءًا من ReactiveX. وهذا يعني أن هناك نظيرًا لنظام Android، على سبيل المثال (RxJava، RxKotlin)، ويمكن للزملاء في ورشة العمل التحدث بنفس اللغة مع بعضهم البعض، على الرغم من أن البعض يعمل مع iOS، والبعض الآخر مع Android.

يتم تحديث إطار العمل باستمرار، وتصحيح الأخطاء الطفيفة، وإضافة دعم للميزات من الإصدارات الجديدة من Swift، وإضافة روابط جديدة. وبما أن RxSwift مفتوح المصدر، فيمكنك متابعة جميع التغييرات. علاوة على ذلك، من الممكن إضافتها بنفسك.

أين يجب استخدام RxSwift؟

  1. الارتباطات. كقاعدة عامة، نحن نتحدث عن واجهة المستخدم، والقدرة على تغيير واجهة المستخدم، كما لو كنا نتفاعل مع تغييرات البيانات، وعدم إخبار الواجهة بشكل صريح بأن الوقت قد حان للتحديث.
  2. العلاقة بين المكونات والعمليات. مجرد مثال. نحن بحاجة للحصول على قائمة البيانات من الشبكة. في الواقع، هذه ليست عملية بسيطة. للقيام بذلك، تحتاج إلى إرسال طلب، وتعيين الاستجابة إلى مجموعة من الكائنات، وحفظه في قاعدة البيانات وإرساله إلى واجهة المستخدم. كقاعدة عامة، تكون المكونات المختلفة مسؤولة عن تنفيذ هذه العمليات (نحن نحب المبادئ ونتبعها SOLID؟). بوجود أداة مثل RxSwift في متناول اليد، يصبح من الممكن وصف ما سيفعله النظام، وكيف سيفعله في أماكن أخرى. ولهذا السبب يتم تحقيق تنظيم أفضل للكود وزيادة إمكانية القراءة. نسبيا، يمكن تقسيم الكود إلى جدول المحتويات والكتاب نفسه.

كوروتين في كوتلين

RxSwift وcoroutines في Kotlin - مادة اختيارية في تطوير الأجهزة المحمولة من AGIMA وGeekBrains
مدرس المقرر الاختياري ألكسندر تيزيك: “التطور الحديث يتطلب وسائل تقنية حديثة”

ما الذي سيتم تدريسه في هيئة تدريس GeekBrains كجزء من الربع ذي العلامات التجارية؟

النظرية والمقارنات مع المناهج الأخرى والأمثلة العملية في لغة Kotlin النقية وفي نموذج تطبيق Android. أما بالنسبة للممارسة، فسوف يُعرض على الطلاب تطبيقًا يرتبط فيه كل شيء بالكوروتينات. والحقيقة هي أن معظم التطبيقات عبارة عن حوسبة غير متزامنة ومتوازية تمامًا. لكن coroutines Kotlin تسمح بتقليل التعليمات البرمجية المربكة أو غير المتجانسة أو المعقدة والمتطلبة للأداء إلى أسلوب واحد سهل الفهم، مما يؤدي إلى الحصول على فوائد في التنفيذ والأداء الصحيحين.

سوف نتعلم كتابة التعليمات البرمجية الاصطلاحية في coroutines التي تحل المشكلات العملية وتكون مفهومة للوهلة الأولى حتى بدون معرفة عميقة بكيفية عمل coroutines (وهو ما لا يمكن قوله عن مكتبات مثل RxJava). سنفهم أيضًا كيفية استخدام مفاهيم أكثر تعقيدًا، مثل نموذج الممثل، لحل المشكلات الأكثر تعقيدًا، مثل مستودع البيانات في مفهوم MVI.

بالمناسبة، المزيد من الأخبار الجيدة. أثناء تسجيل المقرر الاختياري، تم إصدار تحديث لمكتبة Kotlin Coroutines، والذي ظهر فيه الفصل Flow - التناظرية من الأنواع Flowable и Observable من آر إكس جافا. يعمل التحديث بشكل أساسي على إكمال ميزة coroutines من وجهة نظر مطور التطبيق. صحيح أنه لا يزال هناك مجال للتحسين: على الرغم من حقيقة أنه بفضل دعم coroutines في kotlin/native، فمن الممكن بالفعل كتابة تطبيقات متعددة المنصات في Kotlin ولا تعاني من نقص RxJava أو نظائرها في Kotlin الخالصة، دعم coroutines في kotlin/native لم يكتمل بعد. على سبيل المثال، لا يوجد مفهوم للممثلين. بشكل عام، لدى فريق Kotlin خطط لدعم الجهات الفاعلة الأكثر تعقيدًا على جميع المنصات.

Kotlin Coroutines - كيف يساعدون مطور Kotlin؟

توفر Coroutines فرصة رائعة لكتابة تعليمات برمجية قابلة للقراءة وقابلة للصيانة وآمنة وغير متزامنة ومتزامنة. يمكنك أيضًا إنشاء محولات لأطر وأساليب أخرى غير متزامنة قد تكون مستخدمة بالفعل في قاعدة التعليمات البرمجية.

كيف تختلف Coroutines عن المواضيع؟

يسمي فريق Kotlin خيوط coroutines خفيفة الوزن. بالإضافة إلى ذلك، يمكن للكوروتين إرجاع بعض القيمة، لأنه في جوهره، الكوروتين عبارة عن عملية حسابية معلقة. لا يعتمد بشكل مباشر على سلاسل العمليات الخاصة بالنظام؛ فالخيوط تنفذ فقط coroutines.

ما هي المشاكل العملية التي يمكن حلها باستخدام Coroutine، والتي لا يمكن أو يصعب حلها باستخدام Kotlin "الخالص"؟

يتم حل أي مهام غير متزامنة أو متوازية أو "تنافسية" بشكل جيد باستخدام coroutines - سواء كان ذلك معالجة نقرات المستخدم أو الاتصال بالإنترنت أو الاشتراك في التحديثات من قاعدة البيانات.

في Kotlin الخالص، يتم حل هذه المشكلات بنفس الطريقة كما هو الحال في Java - بمساعدة الآلاف من الأطر، لكل منها إيجابيات وسلبيات خاصة بها، ولكن لا يتمتع أي منها بدعم مستوى اللغة.

في الختام، تجدر الإشارة إلى أنه يتم تحديث كل من المقررات الاختيارية (والدورات الرئيسية أيضًا) وفقًا للتغيرات في الظروف الخارجية. إذا ظهرت تحديثات مهمة في اللغات أو الأطر، يأخذ المعلمون ذلك بعين الاعتبار ويقومون بتعديل البرنامج. كل هذا يسمح لك بإبقاء إصبعك على نبض عملية التطوير، إذا جاز التعبير.

المصدر: www.habr.com

إضافة تعليق