تفكيك التعبيرات الشرطية.
لديك تعبير شرطي معقد (if-then/else أو switch).
قم بتفكيك الأجزاء المعقدة من التعبير الشرطي إلى دوال منفصلة: الشرط (condition)، و then و else.
##Example
if (date.before(SUMMER_START) || date.after(SUMMER_END)) {
charge = quantity * winterRate + winterServiceCharge;
}
else {
charge = quantity * summerRate;
}if (isSummer(date)) {
charge = summerCharge(quantity);
}
else {
charge = winterCharge(quantity);
}##Why Refactor
كلما زاد طول كود برمجى، زادت صعوبة فهمه. وتصبح الأمور أكثر صعوبة عندما يمتلئ الكود بالشروط:
-
بينما تكون مشغولاً بمعرفة ما يفعله الكود في كتلة
then، فإنك تنسى ما كان عليه الشرط ذو الصلة. -
بينما تكون مشغولاً بتحليل
else، فإنك تنسى ما يفعله الكود فيthen.
##Benefits
-
من خلال استخراج كود الشرط إلى دوال ذات أسماء واضحة، فإنك تجعل الحياة أسهل للشخص الذي سيقوم بصيانة الكود لاحقاً (مثل نفسك، بعد شهرين من الآن!).
-
تقنية إعادة الهيكلة هذه قابلة للتطبيق أيضاً على التعبيرات القصيرة في الشروط. النص
isSalaryDay()أكثر جمالاً ووصفاً من كود مقارنة التواريخ.
##How to Refactor
-
استخرج الشرط إلى دالة منفصلة عبر طريقة استخراج الدالة.
-
كرر العملية لكتلتي
thenوelse.