---
title: "Bajar campo"
type: "refactoring-technique"
slug: "push-down-field"
url: "http://localhost:3000/es/push-down-field.md"
category: "Dealing with Generalization"
description: "Problema: ¿Se usa un campo solo en unas pocas subclases? Solución: Mueve el campo a esas subclases."
---
# Bajar campo

> Problema: ¿Se usa un campo solo en unas pocas subclases? Solución: Mueve el campo a esas subclases.

## Problem

¿Se usa un campo solo en unas pocas subclases?

## Solution

Mueve el campo a esas subclases.

## Why Refactor

Aunque se planeaba usar un campo de forma universal para todas las clases, en realidad el campo solo se usa en algunas subclases. Esta situación puede darse cuando las funcionalidades previstas no llegan a materializarse, por ejemplo.

También puede ocurrir debido a la extracción (o eliminación) de parte de la funcionalidad de jerarquías de clases.

## Benefits

* Mejora la cohesión interna de la clase. Un campo se ubica allí donde realmente se usa.
* Al moverlo a varias subclases simultáneamente, puedes desarrollar los campos de forma independiente entre sí. Esto sí genera duplicación de código, así que baja los campos solo cuando realmente tengas la intención de usarlos de formas distintas.

## How to Refactor

1. Declara un campo en todas las subclases necesarias.
2. Elimina el campo de la superclase.
## Relations

**Helps you do**

- [Extraer subclase](/es/extract-subclass.md)

**Similar techniques**

- [Bajar método](/es/push-down-method.md)

**Opposite refactorings**

- [Subir campo](/es/pull-up-field.md)

**Eliminates smells**

- [Herencia rechazada](/es/smells/refused-bequest.md)

