بداية الأمر كان في سنة 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
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.
Single responsibility principle | S.R.P
تطبيق هذا المفهوم يكون عن طريق وضع مهمة محددة للـ Function أو للـClass أو حتى للـ Module وتكون هذه المهمه هي أحد اجزاء وظائف البرنامج.
Do one thing and do it well.
نفس الأمر ينطبق عندما نتكلم عن مستوى أعلى كالـClass فلا يمكن أن نقوم باضافة وظائف مختلفه ليست مترابطه مع وظيفة الـClass الأساسية.
fun addition()
fun save()
fun print()
بمعنى أن تقوم باضافة Functions تقوم بأوامر مثل الطباعه وتخزين البيانات في الـ DB وغيرها وهذا مخالف للمفهوم.
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.
يقول Robert:
Gather together the things that change for the same reasons. Separate those things that change for different reasons.
ٍسأكمل لاحقاً شرح بقية المفاهيم حتى لا يصاب القارئ بالملل :)
جاري تحميل الاقتراحات...