---
title: "دمج الأجزاء الشرطية المكررة"
type: "refactoring-technique"
slug: "consolidate-duplicate-conditional-fragments"
url: "http://localhost:3000/ar/consolidate-duplicate-conditional-fragments.md"
category: "تبسيط التعبيرات الشرطية"
description: "المشكلة: يمكن العثور على كود متطابق في جميع فروع الشرط. الحل: انقل الكود خارج الشرط."
languages: ["java", "csharp", "php", "python", "typescript"]
---
# دمج الأجزاء الشرطية المكررة

> المشكلة: يمكن العثور على كود متطابق في جميع فروع الشرط. الحل: انقل الكود خارج الشرط.

## المشكلة

يمكن العثور على كود متطابق في جميع فروع الشرط.

## الحل

انقل الكود خارج الشرط.

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

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

## الفوائد

* إلغاء تكرار الكود.

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

1. إذا كان الكود المكرر في بداية الفروع الشرطية، فانقل الكود إلى مكان قبل الشرط.
2. إذا كان الكود يُنفذ في نهاية الفروع، فضعه بعد الشرط.
3. إذا كان الكود المكرر يقع بشكل عشوائي داخل الفروع، فحاول أولاً نقل الكود إلى بداية أو نهاية الفرع، اعتماداً على ما إذا كان ذلك يغير نتيجة الكود اللاحق.
4. إذا كان ذلك مناسباً وكان الكود المكرر أطول من سطر واحد، فحاول استخدام طريقة [استخراج الدالة](/extract-method).
## Relations

**Eliminates smells**

- [الكود المكرر](/ar/smells/duplicate-code.md)

## Code Examples

### java

```java
// Before
if (isSpecialDeal()) {
  total = price * 0.95;
  send();
}
else {
  total = price * 0.98;
  send();
}

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

### csharp

```csharp
// Before
if (IsSpecialDeal()) 
{
  total = price * 0.95;
  Send();
}
else 
{
  total = price * 0.98;
  Send();
}

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

### php

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

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

### python

```python
// Before
if isSpecialDeal():
    total = price * 0.95
    send()
else:
    total = price * 0.98
    send()

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

### typescript

```typescript
// Before
if (isSpecialDeal()) {
  total = price * 0.95;
  send();
}
else {
  total = price * 0.98;
  send();
}

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

