استبدال المتغير المؤقت باستعلام.
تضع نتيجة تعبير في متغير محلي لاستخدامه لاحقًا في الكود الخاص بك.
انقل التعبير بالكامل إلى دالة منفصلة وأعد النتيجة منها. استعلم من الدالة بدلاً من استخدام المتغير. وادمج الدالة الجديدة في دوال أخرى، إذا لزم الأمر.
##Example
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;
}##Why Refactor
يمكن أن تمهد إعادة الهيكلة هذه الطريق لتطبيق تقنية استخلاص الدالة (Extract Method) لجزء من دالة طويلة جدًا.
قد يتم العثور على نفس التعبير أحيانًا في دوال أخرى أيضًا، وهو أحد الأسباب للتفكير في إنشاء دالة مشتركة.
##Benefits
-
مقروئية الكود. من الأسهل بكثير فهم الغرض من الدالة
getTax()بدلاً من السطرorderPrice() * 0.2. -
كود أكثر رشاقة عبر إزالة التكرار، إذا كان السطر الذي يتم استبداله مستخدمًا في عدة دوال.
##How to Refactor
-
تأكد من تعيين قيمة للمتغير مرة واحدة ومرة واحدة فقط داخل الدالة. إذا لم يكن الأمر كذلك، فاستخدم تقسيم المتغير المؤقت (Split Temporary Variable) لضمان استخدام المتغير فقط لتخزين نتيجة تعبيرك.
-
استخدم استخلاص الدالة (Extract Method) لوضع التعبير المعني في دالة جديدة. تأكد من أن هذه الدالة تعيد قيمة فقط ولا تغير حالة الكائن. إذا كانت الدالة تؤثر على الحالة المرئية للكائن، فاستخدم فصل الاستعلام عن التعديل (Separate Query from Modifier).
-
استبدل المتغير باستعلام للدالة الجديدة الخاصة بك.