هل تستخدم مكتبات متقدمة في تطوير مشاريع الاندرويد ؟

  • wgh

هل تستخدم مكتبات متقدمة (ان صح التعبير) او فلنقل 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 اخي العزيز، هل انت متوفر لمدة ساعتين تقريباً على سكايب ؟ لاستشارة مدفوعة او لنقل شرح بعض الامور لي ؟ ان كان نعم فما هو الوقت المناسب لك ؟ وما هي التكلفة ؟