---
title: "طي التسلسل الهرمي"
type: "refactoring-technique"
slug: "collapse-hierarchy"
url: "http://localhost:3000/ar/collapse-hierarchy.md"
category: "التعامل مع التعميم"
description: "المشكلة: لديك تسلسل هرمي للفئات (class hierarchy) تكون فيه الفئة الفرعية (subclass) مطابقة تقريباً للفئة العليا (superclass). الحل: ادمج الفئة الفرعية والفئة العليا."
---
# طي التسلسل الهرمي

> المشكلة: لديك تسلسل هرمي للفئات (class hierarchy) تكون فيه الفئة الفرعية (subclass) مطابقة تقريباً للفئة العليا (superclass). الحل: ادمج الفئة الفرعية والفئة العليا.

## المشكلة

لديك تسلسل هرمي للفئات تكون فيه الفئة الفرعية مطابقة تقريباً للفئة العليا.

## الحل

ادمج الفئة الفرعية والفئة العليا.

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

لقد نما برنامجك بمرور الوقت وأصبحت الفئة الفرعية والفئة العليا متطابقتين تقريباً. تمت إزالة ميزة من الفئة الفرعية، وتم نقل دالة إلى الفئة العليا... والآن لديك فئتان متشابهتان تماماً.

## الفوائد

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

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

1. حدد أي الفئتين أسهل في الإزالة: الفئة العليا أو الفئة الفرعية.
2. استخدم [رفع الحقل](/pull-up-field) و [رفع الدالة](/pull-up-method) إذا قررت التخلص من الفئة الفرعية. إذا اخترت التخلص من الفئة العليا، فاستخدم [إنزال الحقل](/push-down-field) و [إنزال الدالة](/push-down-method).
3. استبدل جميع استخدامات الفئة التي تقوم بحذفها بالفئة التي سيتم نقل الحقول والدوال إليها. غالباً ما يكون هذا الكود مخصصاً لإنشاء الفئات، وتحديد أنواع المتغيرات والمعاملات، والتوثيق في تعليقات الكود.
4. احذف الفئة الفارغة.
## Relations

**Similar techniques**

- [تضمين الفئة](/ar/inline-class.md)

**Eliminates smells**

- [الفئة الكسولة](/ar/smells/lazy-class.md)
- [العمومية التخمينية](/ar/smells/speculative-generality.md)

