ConstructiCat Logo
CodeBust.
Browse section ▾

دمج التعبيرات الشرطية.

Problem

لديك شروط متعددة تؤدي إلى نفس النتيجة أو الإجراء.

Solution

ادمج كل هذه الشروط في تعبير شرطي واحد.

##Example

Before
double disabilityAmount() {
  if (seniority < 2) {
    return 0;
  }
  if (monthsDisabled > 12) {
    return 0;
  }
  if (isPartTime) {
    return 0;
  }
  // حساب مبلغ الإعاقة.
  // ...
}
After
double disabilityAmount() {
  if (isNotEligibleForDisability()) {
    return 0;
  }
  // حساب مبلغ الإعاقة.
  // ...
}

##Why Refactor

يحتوي الكود الخاص بك على العديد من العمليات المتناوبة التي تؤدي إجراءات متطابقة. وليس من الواضح سبب تقسيم هذه العمليات.

الغرض الرئيسي من الدمج هو استخراج الشرط إلى دالة منفصلة لمزيد من الوضوح.

##Benefits

  • يزيل كود تدفق التحكم المكرر. يساعد دمج الشروط المتعددة التي لها نفس "الوجهة" في إظهار أنك تقوم بفحص معقد واحد فقط يؤدي إلى إجراء واحد.

  • من خلال دمج جميع العمليات، يمكنك الآن عزل هذا التعبير المعقد في دالة جديدة باسم يوضح الغرض من الشرط.

##How to Refactor

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

  1. ادمج الشروط في تعبير واحد باستخدام معاملات الربط and و or. كقاعدة عامة عند الدمج:

    • الشروط المتداخلة (nested) يتم ربطها باستخدام and.

    • الشروط المتتالية (consecutive) يتم ربطها باستخدام or.

  2. قم بتطبيق طريقة استخراج الدالة على شروط العملية وامنح الدالة اسماً يعكس الغرض من التعبير.