---
title: "Cambiar referencia por valor"
type: "refactoring-technique"
slug: "change-reference-to-value"
url: "http://localhost:3000/es/change-reference-to-value.md"
category: "Organizing Data"
description: "Problema: Tienes un objeto de referencia demasiado pequeño y que cambia con poca frecuencia como para justificar la gestión de su ciclo de vida. Solución: Conviértelo en un objeto de valor."
---
# Cambiar referencia por valor

> Problema: Tienes un objeto de referencia demasiado pequeño y que cambia con poca frecuencia como para justificar la gestión de su ciclo de vida. Solución: Conviértelo en un objeto de valor.

## Problem

Tienes un objeto de referencia demasiado pequeño y que cambia con poca frecuencia como para justificar la gestión de su ciclo de vida.

## Solution

Conviértelo en un objeto de valor.

## Why Refactor

La motivación para pasar de una referencia a un valor puede surgir de la incomodidad de trabajar con la referencia. Las referencias requieren gestión por tu parte:

* Siempre requieren solicitar el objeto necesario al almacenamiento.
* Las referencias en memoria pueden resultar incómodas de manejar.
* Trabajar con referencias es especialmente difícil, en comparación con los valores, en sistemas distribuidos y paralelos.

Los valores son especialmente útiles si prefieres tener objetos inmutables en lugar de objetos cuyo estado puede cambiar durante su vida útil.

## Benefits

* Una propiedad importante de los objetos es que deberían ser inmutables. El mismo resultado debería obtenerse en cada consulta que devuelva el valor de un objeto. Si esto se cumple, no surge ningún problema aunque haya muchos objetos que representen la misma cosa.
* Los valores son mucho más fáciles de implementar.

## How to Refactor

1. Haz que el objeto sea inmutable. El objeto no debería tener setters ni ningún otro método que cambie su estado y sus datos ([Eliminar método de asignación](/es/remove-setting-method) puede ayudar aquí). El único lugar donde deberían asignarse datos a los campos de un objeto de valor es un constructor.
2. Crea un método de comparación para poder comparar dos valores.
3. Comprueba si puedes eliminar el método de fábrica y hacer público el constructor del objeto.
## Relations

**Opposite refactorings**

- [Cambiar Valor por Referencia](/es/change-value-to-reference.md)

