المشاركات

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

Strategy Design Pattern

صورة
انهارده حتكلم عن رابع ديزاين باترن و هو ال Strategy Design Pattern اللى مشفش اللى فات او ال Clean Code هيلاقى اللينكات ف اخر البوست ال Strategy Design Pattern هو عبارة عن عيلة من الخوارزميات بتعمل Encapsulates لكل واحد منهم و بتخليه Changeable  و بتخلى كل Class .. independently مستقل يعنى بتنقل بين كل algorithm و التانى يعنى no have knowledge of the implementes دا تعريفه كدا باختصار و سهل جدا يعتبر طيب المهم بقى يا سيدى امتى حستخدمه يعنى مثلا بعمل مشروع تخرج و عايز انقل بين الجوريزم اسمه support vector machine و knn مثلا او لو فى نوعين او 3 encapsulation algorithm و عايز اتنقل بينهم او عايز تحط Business Rules على حاجة معينة مثلا Last Name او Gender Sorting مثلا او Most popular articles by views فكرة ال Strategy Design Pattern ان يبقى عندك Parent Interface و عندك child بيعموا منه implement و بعدين تعمل concrete class يكون reference فى اختلاقات كتير فى ال Strategy Design Pattern اسهل مثال لو عندك مثلا Data و عايزها ع شكل Json او Serialized او Array عادى فا ازاى بقى...

Function clean code

صورة
بخصوص ال clean code من المفترض ان ال function من اسمها تكون بتعمل وظيفة واحده فقط و واضح ان فى اجماع ع كدا  :D بس طبعا الناس بتستسهل و بتكتب 100 سطر كود ف فنكشن واحده بس  😂 😂 و يا سﻻم لو انت مش بتكتب كومنتات ف الكود  😱 😱 هتلاقى المبرمج اللى بيشتغل وراك عمال يشتمك لانك بتشله عشان يقرا الكود و يصلح وراك فا مثلا هنا دى فنكشن بتاخد ال users تـ Loop عليهم و تجيب اليوزر و بعد كدا تشوفه هو active وﻻ ﻻ و لو اة بتبعتله email يعنى عملت 4 حاجات فى ناس بتكتب اكتر من كدا و كود اطول و منغير كومنتات فا دا حاجة مقرفة طبعا و كمان هيبقى صعب تعمل Test للكود الصح بقى نخلى الفنكشن بتعمل حاجة واحد زى الصورة كدا الجزء الى تحت فنكشن بتاخد ال users و بتنادى ع الactive users بتبعتلها ال users و هى بتعمل فلتر و تبعت ال active users من الفنكشن اللى تحت اللى هى بتاخد يوزر واحد و بتبعته لو active فا كدا انت قسمت ال logic ع 3 functions مش محتاج تكتب كومنتات ع الكود حتى لان الكود شارح نفسه و تقدر تعمل unit test لكل فنكشن برحتك بقى يالا بقى جربوا و اتعودوا تخلوا كل function ت...

Clean Code - Too many if else statements can make your code hard to follow

صورة
حاجة سريعة كدا بعيدا عن سلسلة ال Design Pattern بﻻش تكتب if elseif  else كتير بالله عليك بﻻش مش كل شوية انت كدا بتكتب كود بتخلى اللى يشتغل وراك يتعب مثلا الكود فى مشكلة ونا المطلوب منى اصلحها بعدك ليه انا افضل امشى ورا ال elseif دول كلهم اشوف الكود بيعمل ايه بقى اه لو فى يوم هتعمل حاجة لو ﻻ رجعلى false طيب حلو لو اليوم اللى جاى دا string و صح اعمل حاجة لو ﻻ ابعت false تانى  😞 لو هو جمعه ابعت true لو هو سبت ابعت true بردو لو هو حد بردو ابعت true لو مكنش كل دول خلاص ياعم ابعت false انت شايف عملت كام if و elseif ملهمش اى 30 ﻻزمة !! و هتتعب اللى يشتغل وراك و انت نفسك هتتعب لما تيجى تصلح لو الكود فى مشكلة !! طيب بص يا سيدى الحل و دا ال best practices  🤗 🤗 بص ف الصورة انت عملت بس if وحده فقط اهوا لو مفيش يوم جيلك ابعت false و شكرا ع كدا مش حيكمل ال function خلاص انما لو جاى اتوماتيك مش حيدخل ف ال condition دا و حيكمل فا انت حطيت الايام اللى كنت عامل عليهم 3 elseif ملهمش اى ﻻزمة فى array و قولتله بى in_array لو اليوم دا موجود فى ال array دى اب...

Observer Design pattern

صورة
تالت ديزاين باترن هنتكلم عنه انهارده هو Observer Design pattern طيب عمتا كدا ال observer يعتبر من اسهل ال design patterns  🤗 🤗 💃 💃 لانه عباره عن : علاقة One To Many بمعنى مثلا عندك Objecy بيعتمد عليه مجموعه اشخاص فى حالة تغير ال Object بيرسل بﻻش لباقى الاشخاص يعنى ايه دا !!  🙄 🙄 مثلا نفترض انت ف مزاد و بتفتح المزاد واحد قال 20 جنيه  😂 😂 فا انت حتقول ها 20 جنيه حد حيزود  😂 واحد تانى قال 80 جنيه حصل تغير اهوا فا انت هتبلغ الباقى و تقول 80 جنيه حد حيزود طيب هى فين المشكلة اللى حنحلها بالديزاين باترن دا بقى ؟  🤔 🤔 دا اشهر مثال تخيل معايا مثلا ان بيجيلك بريد على البوسطة ( مكتب البريد ) فا انت بتروح كل يوم تسال عليه هل وصل وﻻ ﻻ كل يوم ع كدا بقى انت و 100 غيرك فا بتعمل زحمة للمكان و جهد كتير ع الناس كل يوم فا الحل بقى ان اول ما يجى البريد دا الراجل بتاع البريد يجبهولك للبيت انت و كل الناس التانية عشان كده انت تعتبر Observe و المكتب يعتبر Subject فا اول ما يجى البريد بيبعته لحد عنوان البيت بتاع ال observer اللى هو انت فكرة الديزاي...

Singleton Desgin pattern

صورة
تانى ديزاين باتنر هنتكلم عنه انهارده هو Singleton Design Pattern هو عباره عن كلاس بيتاخد منه Only one instance request lifecycle in a web application يعنى مش بقدر اخد منه New Object (); ﻻ هو مرة باخد منه instance واحد بس يقدر اى component يستخدمها و فى نفس الوقت متبقاش متخزنة فى global varibale عشان avoid collision يعنى لو حطيت package فيها global varibale بنفس الاسم فا سعتها حيحصل مشاكل ايه دا ؟ طب ليه كدا يعنى ؟  :D تخيل معايا عندك مثلا كلاس بيـ connect مع داتا بيز كل مرة بتـ create منه object فى اكتر من مكان بقى تخيل كدا معايا عدد ال connection identical اللى حتتـ create فى ال داتا بيز سيرفير ؟؟  :D فا مشكة كبيرة كدا  🤔 🤔 طب مثلا عندك كلاس بيحتوى ع اعدادات مثلا كلاس settings انت مش محتاج كذا instance منه هو مرة واحده بس بتنادى عليه ف اى مكان يعنى هتستخدمه كا Database connector Logger lock file Settings Proritate Config او اى مثال بقى حسب ال Application بتاعك المهم تكون فهمت فكرته بس طيب و دا بيتعمل ازاى بقى ؟؟  🤨 🤨 بص يا سيدى دا كلاس عادى جدا زى اى كل...

Factory Design Pattern

صورة
انهارده حنبدء ف اول ديزاين باترن و هو ال Factory و زى ما قولنا هنمسك ف كل ديزاين باترن انا حستخدمه ليه حينفعنى فى ايه و ازاى طيب هو مبدئياً كدا الاول عايز اوضح حاجة بس فى حاجة اسمها simple factory method و ال factory design pattern و طبعا فى اختلاف و اكتر ال Developers بيقعوا ف الحتة دى و فكرين ان ال simple factory هو دا الديزاين باترن لكن ﻻ دا يعتبر Programing idiom ونا كنت واحد من الناس دى لحد ما قريت و فهمت الفرق و ححاول اوضحه دلوقتى طيب ايه بقى هو ال factory دا يا عم مروان هو يا سيدى المفروض انه Interface بس مش بتاع ال oop ﻻ هو زى عقد كدا كلاس بيكون اب لكلاسات حوضح النقطة دى قدام المهم هو انك تعرف Interface تقدر عن طريقة تـ create objects بس تخلى ال SubClasses هى اللى تحدد انهى كلاس هيتعمل منه instantiations هو اكيد مش واضح طبعا طيب تعالى كدا نكمل الاول بس و هفهمك تانى فوايده انه بيكريت ال object من ال factory و دا بيكون اسهل من انك كل شوية تعمل new object فى اماكن كتير نفترض عايز تغير اسم الكلاس ؟ هتروح تغيره ف كل الاماكن اللى عامل منها new object ؟ انما كدا هتغي...

Design Patterns in PHP

صورة
نبدا بقى فى سلسلة ال Design Pattern  و نقول بسم الله الرحمن الرحيم انهارده حقول تعريفه بس و هنمسك كل فترة نوع من ال Design Pattern و نتكلم عليه ليه استخدمه و امتى استخدمه و ازاى استخدمه  دول هيكونوا ال 3 حاجات اللى هنعتمد عليهم ف كل نوع نتعلمه طيب هو ايه اصلا بقى ال Design Pattern دا ؟ بص يا سيدى احنا لما بنيجى نبنى المشروع ﻻزم كدا نستخدم الديزاين باترن و احنا بنكتب الكود هيسهل عليا جدا و ازاى اتحكم ف الكود و ال Debug و كدا و حيسهل ع اى مبرمج يشتغل بعدى يفهم الكود بسهوله و الدنيا ماشية ازاى و هتلاقى اى فريم ورك فى الدنيا بيستخدم الديزاين باترن فا انت لما تبدء تشتغل بى فريم ورك و تكتب الكود حتحتاج تكتب بى انواع من الديزاين باترن حسب اللى انت محتاجه سعتها طب هما عملوا ليه يعنى ؟  🤔 🤔 عشان المشاكل اللى بتتكرر كتير فا هو يعتبر احسن طريقة لحل مشكلة معينة بتواجه المبرمج فا بقوا يخترعولها ديزاين باترن Predictability: تحكم ف الكود اسهل و Debug اسرع Reduce Cost: اقل تكلفة و جهد ف الكود و مش عك و كله ف بعضه كدا Reusable بقدر استخدم الكود فى اى مشروع تانى محتاج الكود دا و اعدل ...