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

استبدال المتغير المؤقت باستعلام.

المشكلة

تضع نتيجة تعبير في متغير محلي لاستخدامه لاحقًا في الكود الخاص بك.

الحل

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

##مثال

قبل
double calculateTotal() {
  double basePrice = quantity * itemPrice;
  if (basePrice > 1000) {
    return basePrice * 0.95;
  }
  else {
    return basePrice * 0.98;
  }
}
بعد
double calculateTotal() {
  if (basePrice() > 1000) {
    return basePrice() * 0.95;
  }
  else {
    return basePrice() * 0.98;
  }
}
double basePrice() {
  return quantity * itemPrice;
}

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

يمكن أن تمهد إعادة الهيكلة هذه الطريق لتطبيق تقنية استخلاص الدالة (Extract Method) لجزء من دالة طويلة جدًا.

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

##الفوائد

  • مقروئية الكود. من الأسهل بكثير فهم الغرض من الدالة getTax() بدلاً من السطر orderPrice() * 0.2.

  • كود أكثر رشاقة عبر إزالة التكرار، إذا كان السطر الذي يتم استبداله مستخدمًا في عدة دوال.

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

  1. تأكد من تعيين قيمة للمتغير مرة واحدة ومرة واحدة فقط داخل الدالة. إذا لم يكن الأمر كذلك، فاستخدم تقسيم المتغير المؤقت (Split Temporary Variable) لضمان استخدام المتغير فقط لتخزين نتيجة تعبيرك.

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

  3. استبدل المتغير باستعلام للدالة الجديدة الخاصة بك.