---
title: "Mudar Referência para Valor"
type: "refactoring-technique"
slug: "change-reference-to-value"
url: "http://localhost:3000/pt-br/change-reference-to-value.md"
category: "Organizing Data"
description: "Problema: Você tem um objeto de referência pequeno demais e alterado com pouca frequência para justificar o gerenciamento de seu ciclo de vida. Solução: Transforme-o em um objeto de valor."
---
# Mudar Referência para Valor

> Problema: Você tem um objeto de referência pequeno demais e alterado com pouca frequência para justificar o gerenciamento de seu ciclo de vida. Solução: Transforme-o em um objeto de valor.

## Problem

Você tem um objeto de referência pequeno demais e alterado com pouca frequência para justificar o gerenciamento de seu ciclo de vida.

## Solution

Transforme-o em um objeto de valor.

## Why Refactor

A inspiração para trocar uma referência por um valor pode vir do incômodo de trabalhar com a referência. Referências exigem gerenciamento da sua parte:

* Elas sempre exigem solicitar o objeto necessário ao armazenamento.
* Referências em memória podem ser inconvenientes de manipular.
* Trabalhar com referências é particularmente difícil, em comparação com valores, em sistemas distribuídos e paralelos.

Valores são especialmente úteis se você prefere ter objetos imutáveis em vez de objetos cujo estado pode mudar ao longo de sua vida útil.

## Benefits

* Uma propriedade importante dos objetos é que eles devem ser imutáveis. O mesmo resultado deve ser obtido a cada consulta que retorna o valor de um objeto. Se isso for verdade, não surgem problemas quando há muitos objetos representando a mesma coisa.
* Valores são muito mais fáceis de implementar.

## How to Refactor

1. Torne o objeto imutável. O objeto não deve ter setters nem outros métodos que alterem seu estado e seus dados ([Remover Método de Atribuição](/pt-br/remove-setting-method) pode ajudar aqui). O único lugar onde dados devem ser atribuídos aos campos de um objeto de valor é um construtor.
2. Crie um método de comparação para poder comparar dois valores.
3. Verifique se você pode excluir o método de fábrica e tornar público o construtor do objeto.
## Relations

**Opposite refactorings**

- [Mudar Valor para Referência](/pt-br/change-value-to-reference.md)

