المشاركات

عرض المشاركات من 2017

Laravel Clean Code

صورة
بص يا سيدى تعالى نفترض انك عندك Form فيها 20 inputs بتحصل صح عادى جدا عندك موقع الكترونى و ناس بتسجل استمارات و كدا مثلا و المفروض انك حتخزن ال 20 value اللى جايين من ال form فى ال database الناس بقى بتعملى ايه بتعمل ال route post اللى حيروح ع ال function اللى هتعمل كدا طب الfunction دى بتعمل ايه بقى 1- validation 20 form input 2- new object 3- add values to object then save(); طيب الكلام دا حياخد كام سطر كود بقى بص يا صديقى هياخد تقريبا validation بتاع 22 سطر كود و ال form = new form form x = request name form->save حوالى 22 بردو يعنى هتعدى ال 40 سطر زى اول صورة دا طبعا غير لو فى عمليات هتتعمل فى النص زى مثلا رفع الصورة لسه هتعمل rename و move حرفيا الفنكشن هتعدى ال 50 سطر  هو مش غلط و الكود حيشتغل و الناس كلها بتعمل كدا بس لييييييه !! انت مستخدم فريم ورك مسهل عليك الدنيا كتير ننظم الدنيا شوية تعالى بقى اقولك ازاى يا سيدى اولا ال validation انت ﻻرافيل عملك حاجة اسمها Request هتعمل واحد و ترمى فيه كل ال validation بتاعك و كدا تبقى شلت 22 سطر بتوع الفلديشن من الكنترولار و...

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 بتاعك المهم تكون فهمت فكرته بس طيب و دا بيتعمل ازاى بقى ؟؟  🤨 🤨 بص يا سيدى دا كلاس عادى جدا زى اى كل...