حذف المعاملات (Remove Parameter)

من موسوعة حسوب
< Refactoring
مراجعة 14:05، 25 فبراير 2019 بواسطة جميل-بيلوني (نقاش | مساهمات) (مراجعة وتدقيق.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

المشكلة

لا يُستخدم معاملٌ ما في متن التابع.

الحل

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

مثال

قبل إعادة التصميم

تعريف المعامل Date في بداية التابع ()getContact وعدم استخدامه.

تعريف المعامل Date في بداية التابع ()getContact وعدم استخدامه.
تعريف المعامل Date في بداية التابع ()getContact وعدم استخدامه.

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

إزالة المعامل Date من التابع ()getContact لعدم استخدامه:

إزالة المعامل Date من التابع ()getContact.
إزالة المعامل Date من التابع ()getContact.

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

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

وعلى أية حال، تُشكل المعاملات الإضافية شيفرات إضافية يجب تشغيلها.

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

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

  • لا يحتوي التابع إلا على المعاملات التي يحتاج إليها حقًا.

متى يترك هذا الحل؟

  • يُترك المعامل كما هو، إذا استخدِم التابع بطرق مختلفة في الأصناف الفرعية أو في الأصناف العليا، واستخدِم المُعامل في تلك الطرق المُختلفة.

آلية الحل

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

انظر أيضًا

مصادر