---
title: "Dividir variable temporal"
type: "refactoring-technique"
slug: "split-temporary-variable"
url: "http://localhost:3000/es/split-temporary-variable.md"
category: "Composing Methods"
description: "Problema: Tienes una variable local que se utiliza para almacenar varios valores intermedios dentro de un método (salvo las variables de los bucles). Solución: Usa variables distintas para valores distintos. Cada variable debe ser responsable de una sola cosa en concreto."
languages: ["java", "csharp", "php", "python", "typescript"]
---
# Dividir variable temporal

> Problema: Tienes una variable local que se utiliza para almacenar varios valores intermedios dentro de un método (salvo las variables de los bucles). Solución: Usa variables distintas para valores distintos. Cada variable debe ser responsable de una sola cosa en concreto.

## Problem

Tienes una variable local que se utiliza para almacenar varios valores intermedios dentro de un método (salvo las variables de los bucles).

## Solution

Usa variables distintas para valores distintos. Cada variable debe ser responsable de una sola cosa en concreto.

## Why Refactor

Si escatimas en el número de variables dentro de una función y las reutilizas para diversos fines no relacionados entre sí, seguro que tendrás problemas en cuanto necesites hacer cambios en el código que contiene las variables. Tendrás que volver a comprobar cada uso de la variable para asegurarte de que se emplean los valores correctos.

## Benefits

* Cada componente del código del programa debe ser responsable de una y solo una cosa. Esto facilita enormemente el mantenimiento del código, ya que puedes sustituir cualquier elemento concreto sin temor a provocar efectos no deseados.
* El código se vuelve más legible. Si una variable se creó hace tiempo con prisas, probablemente tenga un nombre que no explica nada: `k`, `a2`, `value`, etc. Pero puedes corregir esta situación dando a las nuevas variables un nombre comprensible y autoexplicativo. Esos nombres podrían parecerse a `customerTaxValue`, `cityUnemploymentRate`, `clientSalutationString` y similares.
* Esta técnica de refactorización resulta útil si prevés usar [Extraer método](/es/extract-method) más adelante.

## How to Refactor

1. Encuentra el primer lugar del código donde se asigna un valor a la variable. Aquí debes renombrar la variable con un nombre que se corresponda con el valor que se está asignando.
2. Usa el nuevo nombre en lugar del antiguo en los lugares donde se utiliza ese valor de la variable.
3. Repite el proceso tantas veces como sea necesario para los lugares donde se asigna a la variable un valor distinto.
## Relations

**Helps you do**

- [Extraer método](/es/extract-method.md)

**Similar techniques**

- [Extraer Variable](/es/extract-variable.md)
- [Eliminar Asignaciones a Parámetros](/es/remove-assignments-to-parameters.md)

**Opposite refactorings**

- [Incorporar variable temporal](/es/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);
```

