RxSwift و Coroutines في Kotlin - تطوير اختياري للهاتف المحمول من AGIMA و GeekBrains



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

هذا العام ، بدأت GeekBrains ، كجزء من قسم تطوير الأجهزة المحمولة في جامعة GeekUniversity الإلكترونية ، العمل مع الوكالة التفاعلية AGIMA ، التي يتألف فريقها من المطورين المحترفين (تنفيذ مشاريع معقدة عالية التحميل وبوابات الشركات وتطبيقات الأجهزة المحمولة ، هذا كل شيء). خلقت AGIMA و GeekBrains اختيارية لغمر عميق في القضايا العملية لتطوير تطبيقات الهاتف المحمول.

في اليوم الآخر تحدثنا مع Igor Vedeneev ، أخصائي iOS ، وألكسندر Tizik ، المتخصص في Android. بفضلهم ، تم إثراء التطوير الاختياري للهاتف المحمول من خلال دورة خاصة عملية على إطار RxSwift و coroutines في Kotlin . في هذه المقالة ، يتحدث المطورون عن أهمية كل اتجاه للمبرمجين.

البرمجة التفاعلية في iOS باستخدام RxSwift كمثال



المعلم الاختياري إيغور فيدينييف: "مع RxSwift سوف يطير طلبك"

ما هي المعلومات التي يتلقاها الطلاب في اختياري؟

لا نتحدث فقط عن إمكانيات الإطار ، ولكن أيضًا نوضح كيفية تطبيقه في حزمة MVVM + RxSwift الكلاسيكية. تعتبر العديد من الأمثلة العملية أيضًا. لدمج البيانات المستلمة ، نكتب تطبيقًا أقرب ما يكون إلى ظروف العمل الميدانية. سيكون تطبيقًا للبحث عن الموسيقى باستخدام واجهة برمجة تطبيقات iTunes Search API . سنطبق جميع أفضل الممارسات ، بالإضافة إلى أننا سننظر في خيار أبسط لاستخدام RxSwift في نموذج MVC.

RxSwift - لماذا هذا الإطار لمبرمج iOS ، كيف يجعل الحياة أسهل للمطور؟

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

بالنسبة للمطور ، تعد معرفة الإطار بمثابة إضافة جيدة في السيرة الذاتية ، نظرًا لأن فهم البرمجة التفاعلية ، وخاصة تجربة RxSwift ، يتم تقديره في السوق.

لماذا تختار هذا الإطار وليس الآخرين؟

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

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

أين تستخدم RxSwift؟

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

Coroutines في Kotlin



المعلم الاختياري ألكساندر تيزيك: "التطوير الحديث يتطلب وسائل تقنية حديثة"

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

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

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

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

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

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

كيف تختلف Coroutines عن الجداول؟

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

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

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

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



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

Source: https://habr.com/ru/post/ar453962/


All Articles