---
title: "رفع التابع (Pull Up Method)"
type: "refactoring-technique"
slug: "pull-up-method"
url: "http://localhost:3000/ar/pull-up-method.md"
category: "التعامل مع التعميم"
description: "المشكلة: تحتوي فئاتك الفرعية على توابع تؤدي عملاً متشابهاً. الحل: اجعل التوابع متطابقة ثم انقلها إلى الفئة الفائقة المناسبة."
---
# رفع التابع (Pull Up Method)

> المشكلة: تحتوي فئاتك الفرعية على توابع تؤدي عملاً متشابهاً. الحل: اجعل التوابع متطابقة ثم انقلها إلى الفئة الفائقة المناسبة.

## المشكلة

تحتوي فئاتك الفرعية على توابع تؤدي عملاً متشابهاً.

## الحل

اجعل التوابع متطابقة ثم انقلها إلى الفئة الفائقة المناسبة.

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

نمت الفئات الفرعية وتطورت بشكل مستقل عن بعضها البعض، مما تسبب في ظهور حقول وتوابع متطابقة (أو شبه متطابقة).

## الفوائد

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

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

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

  * بالنسبة للحقول: استخدم إما [رفع الحقل (Pull Up Field)](/pull-up-field) أو [التغليف الذاتي للحقل (Self-Encapsulate Field)](/encapsulate-field) لإنشاء توابع الجلب والتعيين في الفئات الفرعية؛ ثم صرح بهذه التوابع بشكل مجرد في الفئة الفائقة.
  * بالنسبة للتوابع: استخدم إما [رفع التابع (Pull Up Method)](/pull-up-method) أو صرح بتوابع مجردة لها في الفئة الفائقة (لاحظ أن فئتك ستصبح مجردة إذا لم تكن كذلك من قبل).
4. أزل التوابع من الفئات الفرعية.
5. تحقق من المواقع التي يتم فيها استدعاء التابع. في بعض الأماكن، قد تتمكن من استبدال استخدام الفئة الفرعية بالفئة الفائقة.
## Relations

**Helps you do**

- [تكوين دالة القالب](/ar/form-template-method.md)

**Similar techniques**

- [رفع الحقل (Pull Up Field)](/ar/pull-up-field.md)

**Opposite refactorings**

- [تنزيل التابع (Push Down Method)](/ar/push-down-method.md)

**Eliminates smells**

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

