المشاركات

عرض المشاركات من أكتوبر, 2017

Creating Custom Annotations in Android

annotataion : هي بيانات وصفيه metadata البيانات الوصفيه : هي مجموعة بيانات تعطي معلومات حول بيانات اخري وهنا annotataion هي بشكل اساسي تعطي معلومات حول الكود انشاء annotation مخصص :  @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME)   @interface Status {    public enum Priority {LOW, MEDIUM, HIGH}   Priority priority() default Priority.LOW;   String author() default “Amit”;   int completion() default 0;  } @Target : اين يمكن وضع هذا اذا لم يحدد يمكن استخدامه في كل مكان  ElementType.TYPE (class, interface, enum) ElementType.FIELD (instance variable) ElementType.METHOD ElementType.PARAMETER ElementType.CONSTRUCTOR ElementType.LOCAL_VARIABLE       @Qualifier : هي تعمل على تاهيل dependency  وهي تستخدم للتمييز بين كائنات من نفس النوع ولكل و instance مختلف   @Retenttion :كم المده التي يحتفظ ب annotation RetentionPolicy.SOURCE : هذا النوع يتم تجاهله اثناء compiler ولا يحتاج...

local function

يمكن انشاء داله بداخل داله اخرى وتعتبر داله داخليه لايمكن الوصول لها من main مثال : fun boo (name:String ){ val x= 2 fun foo (age:Int){ println ( "the age is $ age and your name is $ name and $ x " ) } } fun main (args: Array<String>) { boo ( "ali" ) } هنا داله foo تعتبر محليه لا يمكن الوصول لها ولكن هي يمكنها الوصول الي prameter الخاص بالداله الام وكذلك تصل الى property ايضا

افضل الممارسات لتسميه المتغيرات و الدوال والكلاسات

هذه بعض افضل الممارسات لمبرمجين الجافا ينبغي اتباعها اثناء كتابه الكود البرمجي 1 - تجنب  الاسماء التي لا معنى لها  تجنب كتابه الاسماء التي لا معني لها مثل x , y ,ad التي لا تؤدي الى نيه انها ببساطه تقلل من قابليه كتابه الكود وهي الانسب للبرامج التي تحتوي علي 50 سطر برمجي او اقل لا تستخدم هكذا نوع  من التسميات في المشاريع الاحترافيه لماذا ؟ لانه لايمكن بعد فتره ان يتم اختبار المشروع  2 - استخدم اسماء ذات معني قدم اسماء ذات معني التي تكشف عن نيه المبرمج مثال اذا كانت اسم الداله getPayDate() هو افضل بكثير من getPD() حيث عند قراءه هذا الداله انا اعرف انها ترجع تاريخ الدفع حتى بعد عده سنوات  3 - تفضيل الاسم القصير على الطويل اذا كان يكشف عن النيه بوضوح  استخدام الاسم القصير يسهل عمليه الكتابه والقراءه  4 -  تجنب اسماء مماثلة  لا شيء اسوء من الاسماء المماثلة مثلا text و texts حيث من الصعب التفرقه بينها وتؤدي الى مشاكل بسبب سوء الفهم  5 -  اتبع تعليمات جافا للكود  اتبع تعليمات جافا في كتابه...

مقدمة عن Dagger 2

هذه المقاله تحتوي على جزئين : الجزء الاول : يحتوي على مقدمه عن مفهوم dugger2  الجزء الثاني : يحتوي على تنفيذ له مع مثال  لفهم dugger2 في الاندرويد يجب ان نفهم في البدايه هذا السوال : لماذا نحتاج   Dependency Injection ؟  هو مبني علي مفهوم عكس السيطرة invertion if control الذي ينص علي ان الكلاس يجب ان يحصل علي dependency من الخارج وبكلمه اخرى لا يجب على الكلاس نشاء instances من كلاس اخر وانما يجب ان يحصل على instances  من كلاس مخصص مثلا في جافا اذا تم انشاء كائن من خلال new هذا يعني ان الكلاس لايمكن استخدامها او اختبارها بشكل مستقل عن هذا الكلاس وهذا يسمى  hard dependency. الاعتماد الثابت ما فائده توفير التبعيات خارج الكلاس ؟ من اهم الميزات هي امكانيه اعاده الاستخدام والاختبار بصوره منفرده مستقله عن باقي الكلاسات وهذا شيء مفيد جدا الان بعد ان فهمنا قليلا دعونا نتجه الى di والان  السؤال المهم كيف نستخدم  Dependency Injection ؟ لننظر الى الماضي  يمكن ان يتم انشاء الكائن وحقنه الى الكلاس التابع وهذا يخلصنا من مشك...

Architecture patterns in Android part 2 - معماريه كتابه الكود في الاندرويد جزء 2

صورة
لان سوف يتم تنفيذ المعمارية حسب المخطط في المقاله السابقة  التطبيق تم بناء التطبيق على mvp  وقد يكون لاول مره صعب ومعقد ولكن سوف نفهمه بمرور الوقت وقد تم بناء التطبيق اعتمادا على Dagger2, Rxjava, FastAndroidNetworking and PlaceHolderView. محتويات التطبيق : يحتوي على واجهة تدجيل وواجهة رئيسية وكل منها يحتوي على بعض الاواجهات الموجودة في كل التطبيقات واذا لاحظنا الجزمه انها مقسمة الى :  data : تحتوي على كافه بيانات الوصول والتلاعب بلمكونات  di : التبعيه نوفر كلاسات تستخدم dugger 2 view : تحتوي على الواجهات مع presenter الخاص بها  service : خدمات التطبيق  utils : ملحقات التطبيق   هناك الكثير من أجزاء مثيرة للاهتمام. ولكن إذا حاولت شرح كل منهم في وقت واحد ثم أنها سوف تصبح الكثير من المعلومات في وقت واحد. لذلك، أعتقد أن أفضل نهج سيكون لشرح الفلسفات الأساسية ومن ثم يمكن للقارئ أن يكون معنى رمز من خلال التنقل الريبو المشروع. أنصحك أن تأخذ هذه الدراسة المشروع تمتد على مدى أسبوع على الأقل. دراسة الفئات الرئيسية في الترتيب ا...