---
title: "Consolidar expresión condicional"
type: "refactoring-technique"
slug: "consolidate-conditional-expression"
url: "http://localhost:3000/es/consolidate-conditional-expression.md"
category: "Simplifying Conditional Expressions"
description: "Problema: Tienes varios condicionales que conducen al mismo resultado o acción. Solución: Consolida todos esos condicionales en una sola expresión."
languages: ["java", "csharp", "php", "python", "typescript"]
---
# Consolidar expresión condicional

> Problema: Tienes varios condicionales que conducen al mismo resultado o acción. Solución: Consolida todos esos condicionales en una sola expresión.

## Problem

Tienes varios condicionales que conducen al mismo resultado o acción.

## Solution

Consolida todos esos condicionales en una sola expresión.

## Why Refactor

Tu código contiene muchos operadores alternados que realizan acciones idénticas. No queda claro por qué los operadores están separados.

El principal propósito de la consolidación es extraer el condicional a un método aparte para mayor claridad.

## Benefits

* Elimina código duplicado de flujo de control. Combinar varios condicionales que tienen el mismo «destino» ayuda a mostrar que solo estás realizando una comprobación complicada que conduce a una única acción.
* Al consolidar todos los operadores, ahora puedes aislar esta expresión compleja en un nuevo método con un nombre que explique el propósito del condicional.

## How to Refactor

Antes de refactorizar, asegúrate de que los condicionales no tengan «efectos secundarios» ni modifiquen nada, en lugar de limitarse a devolver valores. Los efectos secundarios pueden estar ocultos en el código que se ejecuta dentro del propio operador, por ejemplo cuando se añade algo a una variable en función del resultado de un condicional.

1. Consolida los condicionales en una sola expresión usando `and` y `or`. Como regla general al consolidar:

  * Los condicionales anidados se unen mediante `and`.
  * Los condicionales consecutivos se unen mediante `or`.
2. Aplica [Extraer método](/es/extract-method) a las condiciones del operador y dale al método un nombre que refleje el propósito de la expresión.
## Relations

**Eliminates smells**

- [Código Duplicado](/es/smells/duplicate-code.md)

## Code Examples

### java

```java
// Before
double disabilityAmount() {
  if (seniority < 2) {
    return 0;
  }
  if (monthsDisabled > 12) {
    return 0;
  }
  if (isPartTime) {
    return 0;
  }
  // Calcular el importe por incapacidad.
  // ...
}

// After
double disabilityAmount() {
  if (isNotEligibleForDisability()) {
    return 0;
  }
  // Calcular el importe por incapacidad.
  // ...
}
```

### csharp

```csharp
// Before
double DisabilityAmount() 
{
  if (seniority < 2) 
  {
    return 0;
  }
  if (monthsDisabled > 12) 
  {
    return 0;
  }
  if (isPartTime) 
  {
    return 0;
  }
  // Calcular el importe por incapacidad.
  // ...
}

// After
double DisabilityAmount()
{
  if (IsNotEligibleForDisability())
  {
    return 0;
  }
  // Calcular el importe por incapacidad.
  // ...
}
```

### php

```php
// Before
function disabilityAmount() {
  if ($this->seniority < 2) {
    return 0;
  }
  if ($this->monthsDisabled > 12) {
    return 0;
  }
  if ($this->isPartTime) {
    return 0;
  }
  // calcular el importe por incapacidad
  ...

// After
function disabilityAmount() {
  if ($this->isNotEligibleForDisability()) {
    return 0;
  }
  // calcular el importe por incapacidad
  ...
```

### python

```python
// Before
def disabilityAmount():
    if seniority < 2:
        return 0
    if monthsDisabled > 12:
        return 0
    if isPartTime:
        return 0
    # Calcular el importe por incapacidad.
    # ...

// After
def disabilityAmount():
    if isNotEligibleForDisability():
        return 0
    # Calcular el importe por incapacidad.
    # ...
```

### typescript

```typescript
// Before
disabilityAmount(): number {
  if (seniority < 2) {
    return 0;
  }
  if (monthsDisabled > 12) {
    return 0;
  }
  if (isPartTime) {
    return 0;
  }
  // Calcular el importe por incapacidad.
  // ...
}

// After
disabilityAmount(): number {
  if (isNotEligibleForDisability()) {
    return 0;
  }
  // Calcular el importe por incapacidad.
  // ...
}
```

