شعار ConstructiCat
CodeBust.
تصفح القسم ▾

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

المشكلة

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

الحل

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

##مثال

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

boolean isNotEligibleForDisability() {
  return seniority < 2 || monthsDisabled > 12 || isPartTime;
}

##لماذا نعيد الهيكلة

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

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

##الفوائد

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

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

##كيفية إعادة الهيكلة

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

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

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

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

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