شعار ConstructiCat
CodeBust.
تصفح القسم ▾

إضافة معامل.

المشكلة

لا تمتلك الدالة البيانات الكافية لتنفيذ إجراءات معينة.

الحل

قم بإنشاء معامل جديد لتمرير البيانات اللازمة.

##مثال

قبل
void charge() {
  bank.transfer(amount);
}
بعد
void charge(Date asOf) {
  bank.transfer(amount, asOf);
}

##لماذا نعيد الهيكلة

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

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

##الفوائد

  • تتلقى الدالة البيانات التي تحتاجها صراحةً من الكود المستدعي: تظهر هذه التبعية في توقيع الدالة بدلاً من أن تكون مخفية في حالة الكائن.

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

##كيفية إعادة الهيكلة

  1. تحقق مما إذا كانت الدالة معرفة في فئة عليا (superclass) أو فئة فرعية (subclass). إذا كانت الدالة موجودة فيهما، فستحتاج إلى تكرار جميع الخطوات في هذه الفئات أيضاً.

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

  3. ابحث عن جميع الإشارات (references) إلى الدالة القديمة واستبدلها بإشارات إلى الدالة الجديدة.

  4. احذف الدالة القديمة. لن يكون الحذف ممكناً إذا كانت الدالة القديمة جزءاً من الواجهة العامة (public interface). إذا كان الأمر كذلك، فقم بتمييز الدالة القديمة على أنها مهملة (deprecated).