---
title: "إدخال كائن المعاملات (Introduce Parameter Object)"
type: "refactoring-technique"
slug: "introduce-parameter-object"
url: "http://localhost:3000/ar/introduce-parameter-object.md"
category: "تبسيط استدعاءات الدوال"
description: "المشكلة: تحتوي توابعك على مجموعة متكررة من المعاملات. الحل: استبدل هذه المعاملات بكائن."
---
# إدخال كائن المعاملات (Introduce Parameter Object)

> المشكلة: تحتوي توابعك على مجموعة متكررة من المعاملات. الحل: استبدل هذه المعاملات بكائن.

## المشكلة

تحتوي توابعك على مجموعة متكررة من المعاملات.

## الحل

استبدل هذه المعاملات بكائن.

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

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

## الفوائد

* كود أكثر مقروئية. بدلاً من خليط من المعاملات، ترى كائناً واحداً باسم مفهوم.
* تنشئ مجموعات المعاملات المتماثلة المنتشرة هنا وهناك نوعاً خاصاً بها من تكرار الكود: فبينما لا يتم استدعاء كود متماثل، يتم مصادفة مجموعات متطابقة من المعاملات والوسائط باستمرار.

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

1. أنشئ فئة جديدة تمثل مجموعة المعاملات الخاصة بك. واجعل هذه الفئة غير قابلة للتغيير (Immutable).
2. في التابع الذي تريد إعادة هيكلته، استخدم [إضافة معامل (Add Parameter)](/add-parameter)، وهو المكان الذي سيتم تمرير كائن المعاملات إليه. وفي جميع استدعاءات التابع، مرر الكائن الذي تم إنشاؤه من معاملات التابع القديمة إلى هذا المعامل.
3. ابدأ الآن في حذف المعاملات القديمة من التابع واحداً تلو الآخر، مستبدلاً إياها في الكود بحقول كائن المعاملات. واختبر البرنامج بعد استبدال كل معامل.
4. عند الانتهاء، تحقق مما إذا كان هناك أي فائدة من نقل جزء من التابع (أو حتى التابع بأكمله أحياناً) إلى فئة كائن المعاملات. وإذا كان الأمر كذلك، فاستخدم [نقل التابع (Move Method)](/move-method) أو [استخراج التابع (Extract Method)](/extract-method).
## Relations

**Similar techniques**

- [الحفاظ على الكائن كاملاً (Preserve Whole Object)](/ar/preserve-whole-object.md)

**Eliminates smells**

- [قائمة المعاملات الطويلة](/ar/smells/long-parameter-list.md)
- [تجمعات البيانات](/ar/smells/data-clumps.md)
- [الهوس بالأنواع الأساسية](/ar/smells/primitive-obsession.md)
- [الدالة الطويلة](/ar/smells/long-method.md)

