---
title: "تقسيم المتغير المؤقت"
type: "refactoring-technique"
slug: "split-temporary-variable"
url: "http://localhost:3000/ar/split-temporary-variable.md"
category: "تركيب التوابع"
description: "المشكلة: لديك متغير محلي يُستخدم لتخزين قيم وسيطة مختلفة داخل دالة (باستثناء متغيرات حلقات التكرار). الحل: استخدم متغيرات مختلفة للقيم المختلفة. يجب أن يكون كل متغير مسؤولاً عن شيء معين واحد فقط."
languages: ["java", "csharp", "php", "python", "typescript"]
---
# تقسيم المتغير المؤقت

> المشكلة: لديك متغير محلي يُسخدم لتخزين قيم وسيطة مختلفة داخل دالة (باستثناء متغيرات حلقات التكرار). الحل: استخدم متغيرات مختلفة للقيم المختلفة. يجب أن يكون كل متغير مسؤولاً عن شيء معين واحد فقط.

## المشكلة

لديك متغير محلي يُسخدم لتخزين قيم وسيطة مختلفة داخل دالة (باستثناء متغيرات حلقات التكرار).

## الحل

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

## لماذا نقوم بإعادة الهيكلة

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

## الفوائد

* يجب أن يكون كل مكون من مكونات كود البرنامج مسؤولاً عن شيء واحد وواحد فقط. هذا يسهل صيانة الكود بشكل كبير، حيث يمكنك بسهولة استبدال أي شيء معين دون خوف من حدوث آثار غير مقصودة.
* يصبح الكود أكثر مقروئية. إذا تم إنشاء متغير منذ فترة طويلة على عجل، فمن المحتمل أن يكون له اسم لا يوضح أي شيء: مثل `k` أو `a2` أو `value` وما إلى ذلك. ولكن يمكنك إصلاح هذا الوضع عن طريق تسمية المتغيرات الجديدة بطريقة مفهومة وواضحة بذاتها. قد تشبه هذه الأسماء `customerTaxValue` و `cityUnemploymentRate` و `clientSalutationString` وما شابه ذلك.
* تقنية إعادة الهيكلة هذه مفيدة إذا كنت تتوقع استخدام [استخلاص الدالة](/extract-method) لاحقًا.

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

1. ابحث عن أول مكان في الكود يتم فيه إعطاء قيمة للمتغير. هنا يجب عليك إعادة تسمية المتغير باسم يتوافق مع القيمة التي يتم تعيينها له.
2. استخدم الاسم الجديد بدلاً من الاسم القديم في الأماكن التي تُستخدم فيها هذه القيمة للمتغير.
3. كرر ذلك حسب الحاجة للأماكن التي يتم فيها تعيين قيمة مختلفة للمتغير.
## Relations

**Helps you do**

- [استخراج الدالة](/ar/extract-method.md)

**Similar techniques**

- [استخراج المتغير](/ar/extract-variable.md)
- [إزالة التعيينات للمعاملات (Remove Assignments to Parameters)](/ar/remove-assignments-to-parameters.md)

**Opposite refactorings**

- [تضمين المتغير المؤقت (Inline Temp)](/ar/inline-temp.md)

## Code Examples

### java

```java
// Before
double temp = 2 * (height + width);
System.out.println(temp);
temp = height * width;
System.out.println(temp);

// After
final double perimeter = 2 * (height + width);
System.out.println(perimeter);
final double area = height * width;
System.out.println(area);
```

### csharp

```csharp
// Before
double temp = 2 * (height + width);
Console.WriteLine(temp);
temp = height * width;
Console.WriteLine(temp);

// After
readonly double perimeter = 2 * (height + width);
Console.WriteLine(perimeter);
readonly double area = height * width;
Console.WriteLine(area);
```

### php

```php
// Before
$temp = 2 * ($this->height + $this->width);
echo $temp;
$temp = $this->height * $this->width;
echo $temp;

// After
$perimeter = 2 * ($this->height + $this->width);
echo $perimeter;
$area = $this->height * $this->width;
echo $area;
```

### python

```python
// Before
temp = 2 * (height + width)
print(temp)
temp = height * width
print(temp)

// After
perimeter = 2 * (height + width)
print(perimeter)
area = height * width
print(area)
```

### typescript

```typescript
// Before
let temp = 2 * (height + width);
console.log(temp);
temp = height * width;
console.log(temp);

// After
const perimeter = 2 * (height + width);
console.log(perimeter);
const area = height * width;
console.log(area);
```

