تبديل المرجع إلى قيمة (Change Reference to Value)

من موسوعة حسوب
< Refactoring
مراجعة 13:55، 12 نوفمبر 2018 بواسطة Khaled-yassin (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: تبديل المرجع إلى قيمة (Change Reference to Value)}}</noinclude> = المشكلة = وجود كائن مرجع صغير جد...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

المشكلة

وجود كائن مرجع صغير جدًا وتغييره غير مُتكرر لتبرير إدارة دورة حياته.

الحل

تحويله إلى كائن قيمة.

لم إعادة التصميم؟

قد يرجع التبديل من مرجع إلى قيمة إلى عدم ملائمة العمل مع المرجع. تتطلب المراجع إدارة من جهتك:

  • فهي تتطلب دائما طلب الكائن اللازم من التخزين.
  • قد يكون من غير المريح العمل مع المراجع في الذاكرة.
  • يكون العمل مع المراجع صعبًا للغاية مقارنة بالقيم، في الأنظمة الُموزَعة والموازية.

تكون القيم مفيدة بشكل خاص إذا كنت تفضل أن يكون لديك كائنات غير قابلة للتغيير، عن الكائنات التي قد تتغير حالتها أثناء دورة حياتها.

فوائد تطبيق الحل

  • أحد الخواص الهامة للكائنات أن تكون غير قابلة للتغيير. يجب الحصول على نفس النتيجة عند كل استعلام يُعيد قيمة كائن. إذا كان ذلك صحيحًا، لا تنشأ مشاكل إذا كان هناك العديد من الكائنات التي تمثل نفس الشيء.
  • من السهل جدًا تنفيذ القيم.

مساوئ تطبيق الحل

  • إذا كانت القيمة قابلة للتغيير، يجب التأكد من أنه إذا تغير أي كائن ستَتَحدَّث القيم الموجودة في كافة الكائنات الأخرى التي تمثل نفس الكيان. وهو أمر مرهق جدًا إذ من الأسهل إنشاء مرجع لهذا الغرض.

آلية الحل

  1. جعل الكائن غير قابل للتغيير. يجب ألَّا يكون للكائن أي ضابط أو تابع آخر يُغيّر من حالته وبياناته (قد يساعد هنا تابع إزالة الإعدادات). ويكون المُنشِئ هو المكان الوحيد الذي يجب تعيين بيانات حقول كائن قيمة فيه.
  2. إنشاء تابع مقارنة لتكون قادرًا على مقارنة قيمتين.
  3. تحقق ما إذا كان يمكن حذف تابع إعادة التصميم وجعل مُنشِئ الكائن عامًا.

انظر أيضًا

مصادر