تغيير الاقتران ثنائي الاتجاه إلى أحادي الاتجاه (Change Bidirectional Association to Unidirectional)

من موسوعة حسوب
< Refactoring
مراجعة 17:41، 14 نوفمبر 2018 بواسطة Khaled-yassin (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: تغيير الاقتران ثنائي الاتجاه إلى أحادي الاتجاه (Change Bidirectional Association to Unidirectional)}}<...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

المشكلة

وجود اقتران ثنائي الاتجاه بين الأصناف، ولكن لا يستخدم أحد الأصناف الميزات الأخرى.

الحل

إزالة الاقتران غير المستخدم.

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

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

بالإضافة إلى ذلك، يمكن أن يسبب تنفيذ اقتران ثنائي الاتجاه بشكل غير صحيح مشاكل لتجميع البيانات المهملة (يؤدي ذلك بدوره إلى تضخم الذاكرة بواسطة الكائنات غير المستخدمة).

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

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

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

  • تبسيط الصنف الذي لا يحتاج إلى العلاقة يؤدي إلى شيفرة برمجية أقصر أي صيانة أقل للشيفرة.
  • تقليل التبعية بين الأصناف يؤدي إلى تسهيل صيانة الأصناف المستقلة إذ أن أية تغييرات في صنف ستؤثر على ذلك الصنف فقط.

آلية الحل

  1. تأكد من تحقق أحد ما يلي لأصنافك:
    • لم يستخدم أي اقتران.
    • هناك طريقة أخرى للحصول على الكائن المقترن، مثل إجراء استعلام قاعدة بيانات.
    • يمكن تمرير الكائن المقترن كوسيط إلى التوابع التي تستخدمه.
  2. اعتمادًا علي وضعك، يجب استبدال استخدام الحقل الذي يحتوي علي اقتران مع كائن آخر بمعامل أو استدعاء تابع للحصول علي الكائن بطريقة مختلفة.
  3. حذف الشيفرة البرمجية التي تحدد الكائن المقترن إلى الحقل.
  4. حذف الحقل غير المستخدم الآن.

انظر أيضًا

مصادر