Abdulrahman Alshomrani
Abdulrahman Alshomrani

@ab_shmrani

10 تغريدة 31 قراءة Jun 24, 2020
الكثير من المطورين سمع بمفهوم الـ SOLID Principles في تطوير البرمجيات
سأكتب في هذه السلسلة شرح لهذا المفهوم، وسأقوم بتحديث السلسلة على فترات حتى تكتمل ان شاء الله.
بداية الأمر كان في سنة 1995 قام @unclebobmartin والمعروف بـ Uncle Bob بإصدار ورقه بحثية بعنوان Design Principles and Design Patterns
قام Robert بالخروج بخمسة مفاهيم أساسية:
S - Single responsibility principle
O - Open/closed principle
L - Liskov substitution principle
I - Interface segregation principle
D - Dependency Inversion Principle
طبعاً التسمية (SOLID) وضعها @mfeathers
هذه المفاهيم الخمسة تساعدنا في حل مشاكل التطوير من ناحية الـUsability، Maintainability, and Flexibility
والفائدة الأساسية تعود للمطور بالدرجة الأولى لتسهيل العمل مع مرور الوقت وتطور المشروع وتوسعه.
أولاً:
Single responsibility principle | S.R.P
تطبيق هذا المفهوم يكون عن طريق وضع مهمة محددة للـ Function أو للـClass أو حتى للـ Module وتكون هذه المهمه هي أحد اجزاء وظائف البرنامج.
Do one thing and do it well.
تخيل وجود Function تقوم بعملية الجمع والطرح والضرب معاً كما بالصورة:
الأفضل طبعاً هو فصل هذه المهام على أكثر من Function تكون لكل واحدة منها وظيفه محددة اما الجمع أو الطرح أو غيره.
نفس الأمر ينطبق عندما نتكلم عن مستوى أعلى كالـClass فلا يمكن أن نقوم باضافة وظائف مختلفه ليست مترابطه مع وظيفة الـClass الأساسية.
fun addition()
fun save()
fun print()
بمعنى أن تقوم باضافة Functions تقوم بأوامر مثل الطباعه وتخزين البيانات في الـ DB وغيرها وهذا مخالف للمفهوم.
طبعاً ليس المعنى أن تقوم بانشاء Function واحدة فقط ولكن يجب أن تكون الـ Functions مترابطة بنفس الغرض وهو العمليات الحسابية على سبيل المثال.
يقول Robert:
Gather together the things that change for the same reasons. Separate those things that change for different reasons.
ٍسأكمل لاحقاً شرح بقية المفاهيم حتى لا يصاب القارئ بالملل :)

جاري تحميل الاقتراحات...