تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ثقافة برمجية(3) : مبادئ solid في تصميم البرامج (1)
#1
السلام عليكم

هناك مبادئ تخص هندسة البرامج، مجموعة كلها في الاختصار : SOLID

موجودة على ويكيبيديا

وساشرحها باختصار وبقدر فهمي في عدة أجزاء

الحرف الاول من كلمة SOLID وهو S

يشير إلى الاختصار SRP = Single responsibility principle

أي المسئولية الوحيدة

هذا المبدأ ينص على أن الفئة\الكلاس يجب ان تكون لديه مسئولية واحدة فقط، كيف ؟

لو كان لدينا فئة تمثل بيانات شخص Person فإنه من المحرمات الكبرى حسب مبدأ SRP أن نضع داخل الفئة مسئوليات أخرى غير احتوائها لبيانات الشخص

مسئوليات مثل ماذا؟ ،،،، مثلا لو أردنا حفظ بيانات شخص في قاعدة البيانات ، إياك ان تحفظه من خلال الفئة نفسها،، ما العمل إذاً ؟

لنشرح المثال السابق :

فئة Person
PHP كود :
Public Class Person
    
Public Property Name As String
    
Public Property Cpr As String
End 
Class 
إذا خالفنا المبدأ سنقوم بعمل الجريمة التالية (سنضيف كود حفظ + حذف)
PHP كود :
Public Class Person
    
Public Property Name As String
    
Public Property Cpr As String

    
Public Sub Save()
        
'Update Code
    End Sub
    Public Sub Delete()
        '
Delete Code
    End Sub
End 
Class 
والبديل هو إنشاء فئة أخرى لتأدية هذه الوظيفة
PHP كود :
Public Class PersonData
    
Public Sub Save(As Person)
        
'Update Code
    End Sub
    Public Sub Delete(p As Person)
        '
Delete Code
    End Sub
End 
Class 
[COLOR="#FF0000"]
السؤال الذي يحوم في ذهن القارئ
[/COLOR]، لماذا لا اختصر الموضوع واجعلهم في فئة واحدة ؟؟؟ (وهذا ما كنت أؤمن به سابقاً ولكني كفرت به)

والجواب يا عزيزي تحصل عليه إذا سألناك : ماذا لو أردنا حفظ البيانات في ملف xml أو ملف نصي ؟ هل نقوم كل مرة باشتقاق الفئة ؟ أو نضيف وسيط داخل Save ونحدد له أين نريد الحفظ ؟

أليس الأمثل أن نترك الأمر إلى فئة أخرى لتحفظه أين شائت ؟ وبذلك نزيل التعقيد من الفئة Person لتبقى مسئوليتها الوحيدة فقط هي تمثيل بيانات أي شخص

عادةً يسمون الفئات التي تحفظ البيانات بـ Reposirotry بمعنى مستودع (فيه مجموعة أكواد قراءة وكتابة بيانات من وإلى جدول معين)
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ثقافة برمجية(1): طريقة ترتيب الكود أبو يعقوب 6 850 27-08-13, 11:54 PM
آخر رد: Riad Soft
  ثقافة برمجية(2):طريقة كتابة Property أبو يعقوب 3 826 12-07-13, 04:16 PM
آخر رد: مبرمج بلا حدود

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم