توحيد الأجزاء الشرطية المكررة (Consolidate Duplicate Conditional Fragments)

من موسوعة حسوب

المشكلة

شيفرة برمجية متطابقة موجودة في جميع فروع الشَرطيات.

الحل

نقل الشيفرة البرمجية خارج الشَرطية.

مثال

قبل إعادة التصميم

في لغة Java:

if (isSpecialDeal()) {
  total = price * 0.95;
  send();
}
else {
  total = price * 0.98;
  send();
}

في لغة C#‎:

if (IsSpecialDeal()) 
{
  total = price * 0.95;
  Send();
}
else 
{
  total = price * 0.98;
  Send();
}

في لغة PHP:

if (isSpecialDeal()) {
  $total = $price * 0.95;
  send();
}
else {
  $total = $price * 0.98;
  send();
}

في لغة Python:

if isSpecialDeal():
    total = price * 0.95
    send()
else:
    total = price * 0.98
    send()

بعد إعادة التصميم

في لغة Java:

if (isSpecialDeal()) {
  total = price * 0.95;
}
else {
  total = price * 0.98;
}
send();

في لغة C#‎:

if (IsSpecialDeal())
{
  total = price * 0.95;
}
else
{
  total = price * 0.98;
}
Send();

في لغة PHP:

if (isSpecialDeal())
  $total = $price * 0.95;
else
  $total = $price * 0.98;
send();

في لغة Python:

if isSpecialDeal():
    total = price * 0.95
else:
    total = price * 0.98
send()

لم إعادة التصميم؟

يوجد تكرار وجود الشيفرة البرمجية داخل جميع فروع الشَرطية، في كثير من الأحيان نتيجة تطور الشيفرة البرمجية داخل فروع الشرطية. ويمكن أن يكون فريق التطوير عاملًا مساهمًا في ذلك.

فوائد تطبيق الحل

  • إلغاء الشيفرة البرمجية المكررة.

آلية الحل

  1. إذا كانت الشيفرة البرمجية المكررة في بداية فروع الشَرطية، انقل الشيفرة البرمجية إلى مكان قبل الشَرطية.
  2. إذا نُفِّذت الشيفرة البرمجية في نهاية الفروع، ضعها بعد الشرطية.
  3. إذا كانت الشيفرة البرمجية المكررة موجودة بشكل عشوائي داخل الفروع، حاول أولًا نقل الشيفرة البرمجية إلى بداية أو نهاية الفرع، استنادًا إلى ما إذا كانت ستغير من نتيجة الشيفرة البرمجية اللاحقة أم لا.
  4. إذا كان ذلك مناسبا والشيفرة البرمجية المكررة أطول من سطر واحد ، حاول استخدام استخراج التوابع.

انظر أيضًا

مصادر