---
title: "Dividir Variável Temporária"
type: "refactoring-technique"
slug: "split-temporary-variable"
url: "http://localhost:3000/pt-br/split-temporary-variable.md"
category: "Composing Methods"
description: "Problema: você tem uma variável local usada para armazenar diversos valores intermediários dentro de um método (exceto variáveis de laço). Solução: use variáveis diferentes para valores diferentes. Cada variável deve ser responsável por apenas uma coisa em particular."
languages: ["java", "csharp", "php", "python", "typescript"]
---
# Dividir Variável Temporária

> Problema: você tem uma variável local usada para armazenar diversos valores intermediários dentro de um método (exceto variáveis de laço). Solução: use variáveis diferentes para valores diferentes. Cada variável deve ser responsável por apenas uma coisa em particular.

## Problem

Você tem uma variável local usada para armazenar diversos valores intermediários dentro de um método (exceto variáveis de laço).

## Solution

Use variáveis diferentes para valores diferentes. Cada variável deve ser responsável por apenas uma coisa em particular.

## Why Refactor

Se você economiza no número de variáveis dentro de uma função e as reutiliza para diversos fins não relacionados, com certeza vai enfrentar problemas assim que precisar fazer alterações no código que contém essas variáveis. Você terá que reverificar cada uso da variável para garantir que os valores corretos sejam utilizados.

## Benefits

* Cada componente do código do programa deve ser responsável por uma única coisa. Isso facilita muito a manutenção do código, pois você pode substituir qualquer coisa em particular sem medo de efeitos indesejados.
* O código fica mais legível. Se uma variável foi criada há muito tempo, às pressas, provavelmente tem um nome que não explica nada: `k`, `a2`, `value` etc. Mas você pode corrigir essa situação dando às novas variáveis nomes compreensíveis e autoexplicativos. Esses nomes podem ser algo como `customerTaxValue`, `cityUnemploymentRate`, `clientSalutationString` e assim por diante.
* Esta técnica de refatoração é útil se você prevê usar [Extrair Método](/pt-br/extract-method) mais adiante.

## How to Refactor

1. Encontre o primeiro lugar no código em que a variável recebe um valor. Aqui você deve renomear a variável com um nome que corresponda ao valor que está sendo atribuído.
2. Use o novo nome no lugar do antigo nos pontos em que esse valor da variável é utilizado.
3. Repita conforme necessário para os lugares em que a variável recebe um valor diferente.
## Relations

**Helps you do**

- [Extrair Método](/pt-br/extract-method.md)

**Similar techniques**

- [Extrair Variável](/pt-br/extract-variable.md)
- [Remover Atribuições a Parâmetros](/pt-br/remove-assignments-to-parameters.md)

**Opposite refactorings**

- [Variável Temporária Inline](/pt-br/inline-temp.md)

## Code Examples

### java

```java
// Before
double temp = 2 * (height + width);
System.out.println(temp);
temp = height * width;
System.out.println(temp);

// After
final double perimeter = 2 * (height + width);
System.out.println(perimeter);
final double area = height * width;
System.out.println(area);
```

### csharp

```csharp
// Before
double temp = 2 * (height + width);
Console.WriteLine(temp);
temp = height * width;
Console.WriteLine(temp);

// After
readonly double perimeter = 2 * (height + width);
Console.WriteLine(perimeter);
readonly double area = height * width;
Console.WriteLine(area);
```

### php

```php
// Before
$temp = 2 * ($this->height + $this->width);
echo $temp;
$temp = $this->height * $this->width;
echo $temp;

// After
$perimeter = 2 * ($this->height + $this->width);
echo $perimeter;
$area = $this->height * $this->width;
echo $area;
```

### python

```python
// Before
temp = 2 * (height + width)
print(temp)
temp = height * width
print(temp)

// After
perimeter = 2 * (height + width)
print(perimeter)
area = height * width
print(area)
```

### typescript

```typescript
// Before
let temp = 2 * (height + width);
console.log(temp);
temp = height * width;
console.log(temp);

// After
const perimeter = 2 * (height + width);
console.log(perimeter);
const area = height * width;
console.log(area);
```

