[ شرح ] فهم مبادئ SOLID في PHP ببساطة: كودك هيفضل نضيف وقابل للتطوير لسنين قدام

mohamedadel

مشارك نشط
22 فبراير 2023
23
0
46
السعوديه
يا هلا بكل مهندسي ومطوري ديف بوينت الأعزاء

كلنا في بداياتنا البرمجية كنا بنكتب ملف واحد فيه 2000 سطر بنعمل فيه كل حاجة: بنقرا من الفورم، بنكلم الداتابيز، بنبعت إيميل، وبنطبع الـ HTML! الكود شغال؟ أيوة شغال.. بس أول ما العميل يطلب تعديل بسيط، بنلاقي نفسنا بنعدل في 10 ملفات والكود كله بيفرقع في وشنا!

هنا بيجي دور مبادئ SOLID الخمسة اللي وضعها روبرت مارتن (Uncle Bob)، وهي القواعد الذهبية اللي بتخلي كودك نضيف، مرن، وسهل الفحص والتطوير بدون صداع. تعالوا نفهمها بالبلدي وبالأمثلة العملية في PHP.

1. مبدأ المسؤولية الواحدة (S - Single Responsibility Principle)
القاعدة: الكلاس لازم يكون عنده سبب واحد بس للتغيير، يعني وظيفته محددة وواضحة.
  • غلط: كلاس User بيسجل المستخدم في الداتابيز، ويبعتله إيميل ترحيب، ويحسب نسبة الخصم!
  • صح: كلاس UserRepository للداتابيز، كلاس EmailService لإرسال الإيميلات، وكلاس DiscountCalculator للخصومات.

2. مبدأ المفتوح والمغلق (O - Open/Closed Principle)
القاعدة: الكلاس لازم يكون مفتوح للإضافة والتوسع، لكن مقفول للتعديل على كوده الداخلي.
PHP:
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى
عاوز تضيف فودافون كاش أو فوري؟ اعمل كلاس جديد بينفذ نفس الـ Interface بدون ما تلمس الكلاسات القديمة!

3. مبدأ ليسكوف للتعويض (L - Liskov Substitution Principle)
القاعدة: لو عندك كلاس ابن مشتق من كلاس أب، لازم تقدر تستخدم الابن مكان الأب في أي مكان بدون ما يحصل أي كسر في منطق البرنامج أو استثناءات غير متوقعة.

4. مبدأ فصل الواجهات (I - Interface Segregation Principle)
القاعدة: متجبرش كلاس إنه ينفذ دوال في الـ Interface هو مش محتاجها ومش هيستخدمها.
  • بدل ما تعمل Interface عملاق فيه fly(), drive(), swim() وتجبر كلاس Car ينفذ fly().
  • قسمهم لواجهات صغيرة: Drivable, Flyable, Swimmable.

5. مبدأ عكس الاعتمادية (D - Dependency Inversion Principle)
القاعدة: الكلاسات عالية المستوى متعتمدش على كلاسات منخفضة المستوى ملموسة، الاتنين يعتمدوا على تجريدات (Interfaces):
PHP:
من فضلك قم , تسجيل الدخول أو تسجيل لعرض المحتوى

كلمة ختامية:
تطبيق مبادئ SOLID في الأول ممكن تحس إنه بيزود عدد الملفات، لكن مع كبر حجم المشروع هتحس براحة نفسية خرافية وإنت بتعدل أو تضيف ميزات جديدة بكل سلاسة وأمان.

أتمنى يكون الشرح بسيط وممتع، ولو في أي مبدأ حابين نتعمق فيه ونعمله أمثلة كود أكبر عرفوني في الردود!
 

AdBlock Detected

We apologize, but you must disable AdBlock to view this site.

We rely on advertisements to support the continuity of the site and provide the best content.