---
title: "إضافة معامل"
type: "refactoring-technique"
slug: "add-parameter"
url: "http://localhost:3000/ar/add-parameter.md"
category: "تبسيط استدعاءات الدوال"
description: "المشكلة: لا تمتلك الدالة البيانات الكافية لتنفيذ إجراءات معينة. الحل: قم بإنشاء معامل جديد لتمرير البيانات اللازمة."
---
# إضافة معامل

> المشكلة: لا تمتلك الدالة البيانات الكافية لتنفيذ إجراءات معينة. الحل: قم بإنشاء معامل جديد لتمرير البيانات اللازمة.

## المشكلة

لا تمتلك الدالة البيانات الكافية لتنفيذ إجراءات معينة.

## الحل

قم بإنشاء معامل جديد لتمرير البيانات اللازمة.

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

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

## الفوائد

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

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

1. تحقق مما إذا كانت الدالة معرفة في فئة عليا (superclass) أو فئة فرعية (subclass). إذا كانت الدالة موجودة فيهما، فستحتاج إلى تكرار جميع الخطوات في هذه الفئات أيضاً.
2. الخطوة التالية بالغة الأهمية للحفاظ على عمل البرنامج أثناء عملية إعادة الهيكلة. قم بإنشاء دالة جديدة عن طريق نسخ القديمة وإضافة المعامل اللازم إليها. استبدل كود الدالة القديمة باستدعاء للدالة الجديدة. يمكنك تمرير أي قيمة للمعامل الجديد (مثل `null` للكائنات أو صفر للأرقام).
3. ابحث عن جميع الإشارات (references) إلى الدالة القديمة واستبدلها بإشارات إلى الدالة الجديدة.
4. احذف الدالة القديمة. لن يكون الحذف ممكناً إذا كانت الدالة القديمة جزءاً من الواجهة العامة (public interface). إذا كان الأمر كذلك، فقم بتمييز الدالة القديمة على أنها مهملة (deprecated).
## Relations

**Helps you do**

- [إدخال كائن المعاملات (Introduce Parameter Object)](/ar/introduce-parameter-object.md)

**Similar techniques**

- [إعادة تسمية التابع (Rename Method)](/ar/rename-method.md)

**Opposite refactorings**

- [إزالة المعامل (Remove Parameter)](/ar/remove-parameter.md)

