---
title: "Método en Línea"
type: "refactoring-technique"
slug: "inline-method"
url: "http://localhost:3000/es/inline-method.md"
category: "Composing Methods"
description: "Problema: Cuando el cuerpo de un método es más evidente que el propio método, usa esta técnica. Solución: Sustituye las llamadas al método por el contenido del método y elimina el propio método."
languages: ["java", "csharp", "php", "python", "typescript"]
---
# Método en Línea

> Problema: Cuando el cuerpo de un método es más evidente que el propio método, usa esta técnica. Solución: Sustituye las llamadas al método por el contenido del método y elimina el propio método.

## Problem

Cuando el cuerpo de un método es más evidente que el propio método, usa esta técnica.

## Solution

Sustituye las llamadas al método por el contenido del método y elimina el propio método.

## Why Refactor

Un método simplemente delega en otro método. En sí misma, esta delegación no supone ningún problema. Pero cuando hay muchos métodos de este tipo, se convierten en una maraña confusa difícil de desenredar.

A menudo los métodos no son demasiado cortos _en un principio_, pero acaban siéndolo a medida que se hacen cambios en el programa. Así que no tengas reparos en deshacerte de los métodos que han dejado de ser útiles.

## Benefits

* Al minimizar el número de métodos innecesarios, haces que el código sea más directo.

## How to Refactor

1. Asegúrate de que el método no esté redefinido en subclases. Si el método está redefinido, abstente de usar esta técnica.
2. Encuentra todas las llamadas al método. Sustituye estas llamadas por el contenido del método.
3. Elimina el método.
## Relations

**Opposite refactorings**

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

**Eliminates smells**

- [Generalidad especulativa](/es/smells/speculative-generality.md)

## Code Examples

### java

```java
// Before
class PizzaDelivery {
  // ...
  int getRating() {
    return moreThanFiveLateDeliveries() ? 2 : 1;
  }
  boolean moreThanFiveLateDeliveries() {
    return numberOfLateDeliveries > 5;
  }
}

// After
class PizzaDelivery {
  // ...
  int getRating() {
    return numberOfLateDeliveries > 5 ? 2 : 1;
  }
}
```

### csharp

```csharp
// Before
class PizzaDelivery 
{
  // ...
  int GetRating() 
  {
    return MoreThanFiveLateDeliveries() ? 2 : 1;
  }
  bool MoreThanFiveLateDeliveries() 
  {
    return numberOfLateDeliveries > 5;
  }
}

// After
class PizzaDelivery 
{
  // ...
  int GetRating() 
  {
    return numberOfLateDeliveries > 5 ? 2 : 1;
  }
}
```

### php

```php
// Before
function getRating() {
  return ($this->moreThanFiveLateDeliveries()) ? 2 : 1;
}
function moreThanFiveLateDeliveries() {
  return $this->numberOfLateDeliveries > 5;
}

// After
function getRating() {
  return ($this->numberOfLateDeliveries > 5) ? 2 : 1;
}
```

### python

```python
// Before
class PizzaDelivery:
    # ...
    def getRating(self):
        return 2 if self.moreThanFiveLateDeliveries() else 1
  
    def moreThanFiveLateDeliveries(self):
        return self.numberOfLateDeliveries > 5

// After
class PizzaDelivery:
  # ...
  def getRating(self):
    return 2 if self.numberOfLateDeliveries > 5 else 1
```

### typescript

```typescript
// Before
class PizzaDelivery {
  // ...
  getRating(): number {
    return moreThanFiveLateDeliveries() ? 2 : 1;
  }
  moreThanFiveLateDeliveries(): boolean {
    return numberOfLateDeliveries > 5;
  }
}

// After
class PizzaDelivery {
  // ...
  getRating(): number {
    return numberOfLateDeliveries > 5 ? 2 : 1;
  }
}
```

