استبدال المعامل بدوال صريحة.
Problem
تنقسم الدالة إلى أجزاء، يتم تشغيل كل منها اعتمادًا على قيمة معامل (parameter).
Solution
استخلص الأجزاء الفردية من الدالة إلى دوال خاصة بها واستدعها بدلاً من الدالة الأصلية.
##Example
Before
void setValue(String name, int value) {
if (name.equals("height")) {
height = value;
return;
}
if (name.equals("width")) {
width = value;
return;
}
Assert.shouldNeverReachHere();
}After
void setHeight(int arg) {
height = arg;
}
void setWidth(int arg) {
width = arg;
}##Why Refactor
تضخمت دالة تحتوي على متغيرات معتمدة على المعاملات بشكل كبير. ويتم تشغيل كود معقد في كل فرع، وتضاف متغيرات جديدة نادرًا جدًا.
##Benefits
- يحسن مقروئية الكود. من الأسهل بكثير فهم الغرض من
startEngine()بدلاً منsetValue("engineEnabled", true).
##How to Refactor
-
لكل متغير من متغيرات الدالة، أنشئ دالة منفصلة. قم بتشغيل هذه الدوال بناءً على قيمة المعامل في الدالة الرئيسية.
-
ابحث عن جميع الأماكن التي يتم فيها استدعاء الدالة الأصلية. وفي هذه الأماكن، ضع استدعاءً لأحد المتغيرات الجديدة المعتمدة على المعامل.
-
عندما لا تتبقى أي استدعاءات للدالة الأصلية، قم بحذفها.