SOLID (تصميم كائني المنحى)

SOLID ((بالعربية)) هو اسمً تاجي استذكاري وضعه مايكل فيذرز اختصاراً للمبادئ الخمسة الأولى المقترحة من قبل روبرت سي. مارتن[1] في بداية عام 2000[2] والمتبعة في البرمجة والتصميم كائني المنحى. هذه المبادئ هي: Single responsibility ((بالعربية)) وOpen-closed ((بالعربية)) وLiskov substitution ((بالعربية)) وInterface segregation ((بالعربية)) وDependency inversion ((بالعربية)). تهدف هذه المبادئ -عند تطبيقها- إلى زيادة احتمال قيام المبرمج بتطوير نظامٍ سهل الصيانة والتمديد مستقبلاً.[2] يمكن القول أن مبادئ SOLID هي مجموعة من الإرشادات التي يؤدي تطبيقها أثناء تطوير النظام البرمجي إلى إزالة روائح الشفرة بسبب دفع المبرمج إلى إعادة هيكلة الشفرة مراراً وتكراراً إلى أن يحصل في النهاية على شفرة برمجية سهلة القراءة والتمديد. تُعتبر SOLID جزءاً من ٱستراتيجية شاملة خاصة بالمنهجيات التكيفية والأجايلية.[2]

لمحة عامة عدل

الحرف

الاستهلالي

يرمز إلى المفهوم
S SRP [3]
Single responsibility principle ((بالعربية))
يمتلك الصف مسؤولية واحدة فقط (بمعنى أن أي تعديل على توصيف البرنامج يجب أن يكون له تأثير على توصيف الصف).
O OCP [4]
Open-closed principle ((بالعربية))
يجب أن تكون البنى البرمجية قابلة للتمديد ومغلقة للتعديل.
L LSP [5]
Liskov substitution principle ((بالعربية))
يجب على الكائنات الموجودة أثناء عمل البرنامج أن تكون قابلة للاستبدال بكائنات أخرى وارثة لها دون التأثير على صحة البرنامج.
I ISP [6]
Interface segregation principle ((بالعربية))
إن وجود عدد من الواجهات الخاصة بالزبون أفضل كثيراً من وجود واجهة وحيدة عمومية الأهداف.
D DIP [7]
Dependency inversion principle ((بالعربية))
«يجب الاعتماد على التجريدات وليس على التحقيقات»، عكس التبعية هي طريقة تساعد على اتباع هذا المفهوم.

المراجع عدل

  1. ^ “الحصول على بداية سوليد.”، روبرت سي. مارتن (“العم بوب”), objectmentor.com. (بالإنجليزية) نسخة محفوظة 26 ديسمبر 2016 على موقع واي باك مشين.
  2. ^ أ ب ت “التصميم الكائني المنحى سوليد”، ساندي ميتز (جامعة ديوك)، تموز، 2009. (بالإنجليزية) نسخة محفوظة 20 أكتوبر 2014 على موقع واي باك مشين.
  3. ^ "Single Responsibility Principle" (PDF). مؤرشف من الأصل (PDF) في 2019-04-09. (بالإنجليزية)
  4. ^ "Open/Closed Principle" (PDF). مؤرشف من الأصل (PDF) في 2019-04-03. (بالإنجليزية)
  5. ^ "Liskov Substitution Principle" (PDF). مؤرشف من الأصل (PDF) في 2019-04-02. (بالإنجليزية)
  6. ^ "Interface Segregation Principle" (PDF). مؤرشف من الأصل (PDF) في 2019-04-02. (بالإنجليزية)
  7. ^ "Dependency Inversion Principle" (PDF). مؤرشف من الأصل (PDF) في 2019-04-16. (بالإنجليزية)