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

جعل التابع يقبل معاملات (Parameterize Method).

المشكلة

تنفّذ عدة أساليب إجراءات متشابهة لا تختلف إلا في القيم أو الأعداد أو العمليات المستخدمة داخلها.

الحل

اجمع هذه التوابع معاً باستخدام معامل يمرر القيمة الخاصة المطلوبة.

##مثال

قبل
void tenPercentRaise() {
  salary *= 1.1;
}
void fivePercentRaise() {
  salary *= 1.05;
}
بعد
void raise(double factor) {
  salary *= 1 + factor;
}

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

إذا كان لديك توابع متشابهة، فمن المحتمل أن يكون لديك كود مكرر، بكل ما يترتب على ذلك من عواقب.

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

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

  1. أنشئ تابعاً جديداً يقبل معاملاً وانقل إليه الكود المشترك بين جميع التوابع عن طريق تطبيق استخراج التابع (Extract Method). لاحظ أنه في بعض الأحيان يكون جزء معين فقط من التوابع متطابقاً بالفعل. في هذه الحالة، تتم إعادة الهيكلة عن طريق استخراج الجزء المتطابق فقط إلى تابع جديد.

  2. في كود التابع الجديد، استبدل القيمة الخاصة/المختلفة بالمعامل.

  3. لكل تابع قديم، ابحث عن الأماكن التي يتم استدعاؤه فيها، واستبدل هذه الاستدعاءات باستدعاءات للتابع الجديد مع تمرير المعامل المناسب. ثم احذف التابع القديم.