هل تستخدم مكتبات متقدمة (ان صح التعبير) او فلنقل industry-standards في تطوير مشاريع الاندرويد ؟
على سبيل المثال:
dagger 2
RxJava
retrofit
butterknife او android data binding
بلاضافة الى ال unit testing او التطوير المقاد بلاختبارات (TDD)
اختبار الواجهة (UI Test) باستخدام espresso مثلاً
بلنسبة لي استخدم retrofit و butterknife بلاضافة الى Junit ومؤخراً بدأت استخدم dagger 2 والقليل من espresso
افكر حالياً باستخدام RxJava في مشروع قادم، لديك تجربة معها او مع احد هذه المكتبات (او غيرها) وشعرت انها تقدم فائدة حقيقية ؟ ام انك لا تستخدمها وتعتمد على ما تقدمه ال SDK فقط ؟
نعم ، نستخدم Dagger2, RxJava, Retrofit, ButterKinfe, Realm, Mockito, Junit4, Espresso, ...etc
بشكل يومي في تطبيقات الأندرويد. حيث تعتبر ال de-facto standards لتطبيقات الأندرويد.
طبعا بعض الأدوات الهدف منها ليس الأداة فقط ، وإنما تطبيق concept معين، فمثلا باستخدام Dagger2 نكون طبقنا مفهوم Dependency Injection والذي يعني decoupled objects و more testable code.
إضافة الى ذلك استخدم هيكلة Clean Architecture والتي تفصل بين ال Presentation و ال Domain وال Data layer.
وفي ال Presentation غالبا اتبع Model-View-Presenter.
للإجابة حول سؤالك عن RxJava ، نعم الفائدة كبيرة ولا يوجد بديل. فلن تحتاج مجددا للتفكير في موضوع ال threading و how to manage threads ، ايضا ستقلل عليك العديد من الأكواد و ال callbacks ومعالجة الأخطاء ستصبح أسهل ، اخيرا تقدم لك RxJava طريقة functional programming ما يقلل حجم الكود ويقلل ال bugs. دائما less is better.
شكرا.
رائع !
عندما تستخدم dagger 2 كيف تقوم بتوزيع ال موديلز والكومبوننت ؟ ارى بعض المطورين يقوم بعمل component لكل activity مثلاً، ماذا لو كان لدينا ٥٠ activities ؟ البعض الاخر مثلاً يقوم بعمل موديل واحدة ويضع فيها كل شيئ.
ما هي الطريقة التي تتبعها انت ؟
بعض ال objects تحتاجها على مستوى التطبيق لان انشاءها عملية مكلفة مثل OkHttp ، هذه ال objects غالبا تكون ال lifecycle الخاصة بها على مستوى التطبيق لذلك دائما تكون على شكل App Component.
الان كل Activity تحتاج بالإضافة الى objects السابقة ، تحتاج الى objects خاصة بها ، تنتهي مع نهاية ال Activity. في هذا الحالة نحتاج الى Activity Component.
وهكذا لكل Activity/Fragment سيكون هناك Component تحوي الكانئات الخاصة بها.
@sudanix اخي العزيز، هل انت متوفر لمدة ساعتين تقريباً على سكايب ؟ لاستشارة مدفوعة او لنقل شرح بعض الامور لي ؟ ان كان نعم فما هو الوقت المناسب لك ؟ وما هي التكلفة ؟
التعليقات