---
title: "Colapsar jerarquía"
type: "refactoring-technique"
slug: "collapse-hierarchy"
url: "http://localhost:3000/es/collapse-hierarchy.md"
category: "Dealing with Generalization"
description: "Problema: Tienes una jerarquía de clases en la que una subclase es prácticamente igual que su superclase. Solución: Fusiona la subclase y la superclase."
---
# Colapsar jerarquía

> Problema: Tienes una jerarquía de clases en la que una subclase es prácticamente igual que su superclase. Solución: Fusiona la subclase y la superclase.

## Problem

Tienes una jerarquía de clases en la que una subclase es prácticamente igual que su superclase.

## Solution

Fusiona la subclase y la superclase.

## Why Refactor

Tu programa ha crecido con el tiempo y una subclase y una superclase han llegado a ser prácticamente iguales. Se eliminó una funcionalidad de una subclase, se movió un método a la superclase... y ahora tienes dos clases casi idénticas.

## Benefits

* Se reduce la complejidad del programa. Menos clases significan menos cosas que mantener presentes en la cabeza y menos piezas móviles susceptibles de romperse de las que preocuparse durante futuros cambios de código.
* Navegar por tu código es más fácil cuando los métodos se definen pronto en una sola clase. No necesitas rastrear toda la jerarquía para encontrar un método concreto.

## How to Refactor

1. Selecciona qué clase es más fácil de eliminar: la superclase o su subclase.
2. Usa [Subir campo](/es/pull-up-field) y [Subir método](/es/pull-up-method) si decides deshacerte de la subclase. Si optas por eliminar la superclase, recurre a [Bajar campo](/es/push-down-field) y [Bajar método](/es/push-down-method).
3. Sustituye todos los usos de la clase que vas a eliminar por la clase a la que se van a migrar los campos y métodos. A menudo se tratará de código para crear clases, tipado de variables y parámetros, y documentación en los comentarios del código.
4. Elimina la clase vacía.
## Relations

**Similar techniques**

- [Incorporar clase](/es/inline-class.md)

**Eliminates smells**

- [Clase perezosa](/es/smells/lazy-class.md)
- [Generalidad especulativa](/es/smells/speculative-generality.md)

