---
title: "Introducir Objeto Parámetro"
type: "refactoring-technique"
slug: "introduce-parameter-object"
url: "http://localhost:3000/es/introduce-parameter-object.md"
category: "Simplifying Method Calls"
description: "Problema: Tus métodos contienen un grupo de parámetros que se repite. Solución: Sustituye estos parámetros por un objeto."
---
# Introducir Objeto Parámetro

> Problema: Tus métodos contienen un grupo de parámetros que se repite. Solución: Sustituye estos parámetros por un objeto.

## Problem

Tus métodos contienen un grupo de parámetros que se repite.

## Solution

Sustituye estos parámetros por un objeto.

## Why Refactor

A menudo aparecen grupos idénticos de parámetros en varios métodos. Esto provoca duplicación de código tanto de los propios parámetros como de las operaciones relacionadas. Al consolidar los parámetros en una única clase, también puedes mover allí los métodos que manejan estos datos, liberando a los demás métodos de ese código.

## Benefits

* Código más legible. En lugar de un revoltijo de parámetros, ves un único objeto con un nombre comprensible.
* Los grupos idénticos de parámetros dispersos aquí y allá crean su propia forma de duplicación de código: aunque no se esté llamando a código idéntico, sí se encuentran constantemente grupos idénticos de parámetros y argumentos.

## How to Refactor

1. Crea una nueva clase que represente tu grupo de parámetros. Haz que la clase sea inmutable.
2. En el método que quieres refactorizar, usa [Añadir Parámetro](/es/add-parameter), que es donde se pasará tu objeto parámetro. En todas las llamadas al método, pasa a este parámetro el objeto creado a partir de los antiguos parámetros del método.
3. Ahora empieza a eliminar los antiguos parámetros del método uno a uno, sustituyéndolos en el código por campos del objeto parámetro. Prueba el programa después de sustituir cada parámetro.
4. Cuando termines, comprueba si tiene sentido mover una parte del método (o, a veces, incluso el método completo) a la clase del objeto parámetro. Si es así, usa [Mover Método](/es/move-method) o [Extraer Método](/es/extract-method).
## Relations

**Similar techniques**

- [Preservar el Objeto Completo](/es/preserve-whole-object.md)

**Eliminates smells**

- [Lista de Parámetros Larga](/es/smells/long-parameter-list.md)
- [Grupos de datos](/es/smells/data-clumps.md)
- [Obsesión por los tipos primitivos](/es/smells/primitive-obsession.md)
- [Método Largo](/es/smells/long-method.md)

