ConstructiCat Logo
CodeBust.
Browse section ▾

تفكيك التعبيرات الشرطية.

Problem

لديك تعبير شرطي معقد (if-then/else أو switch).

Solution

قم بتفكيك الأجزاء المعقدة من التعبير الشرطي إلى دوال منفصلة: الشرط (condition)، و then و else.

##Example

Before
if (date.before(SUMMER_START) || date.after(SUMMER_END)) {
  charge = quantity * winterRate + winterServiceCharge;
}
else {
  charge = quantity * summerRate;
}
After
if (isSummer(date)) {
  charge = summerCharge(quantity);
}
else {
  charge = winterCharge(quantity);
}

##Why Refactor

كلما زاد طول كود برمجى، زادت صعوبة فهمه. وتصبح الأمور أكثر صعوبة عندما يمتلئ الكود بالشروط:

  • بينما تكون مشغولاً بمعرفة ما يفعله الكود في كتلة then، فإنك تنسى ما كان عليه الشرط ذو الصلة.

  • بينما تكون مشغولاً بتحليل else، فإنك تنسى ما يفعله الكود في then.

##Benefits

  • من خلال استخراج كود الشرط إلى دوال ذات أسماء واضحة، فإنك تجعل الحياة أسهل للشخص الذي سيقوم بصيانة الكود لاحقاً (مثل نفسك، بعد شهرين من الآن!).

  • تقنية إعادة الهيكلة هذه قابلة للتطبيق أيضاً على التعبيرات القصيرة في الشروط. النص isSalaryDay() أكثر جمالاً ووصفاً من كود مقارنة التواريخ.

##How to Refactor

  1. استخرج الشرط إلى دالة منفصلة عبر طريقة استخراج الدالة.

  2. كرر العملية لكتلتي then و else.