---
title: "Código Duplicado"
type: "code-smell"
slug: "duplicate-code"
url: "http://localhost:3000/es/smells/duplicate-code.md"
category: "Dispensables"
description: "Dos fragmentos de código tienen un aspecto casi idéntico."
---
# Código Duplicado

> Dos fragmentos de código tienen un aspecto casi idéntico.

## Signs and Symptoms

Dos fragmentos de código tienen un aspecto casi idéntico.

## Reasons for the Problem

La duplicación suele producirse cuando varios programadores trabajan en partes diferentes del mismo programa al mismo tiempo. Como están trabajando en tareas distintas, pueden no ser conscientes de que un colega ya ha escrito código similar que podría reutilizarse para sus propias necesidades.

También existe una duplicación más sutil, cuando partes específicas del código tienen un aspecto diferente pero en realidad realizan el mismo trabajo. Este tipo de duplicación puede ser difícil de encontrar y corregir.

A veces la duplicación es intencionada. Con las prisas por cumplir los plazos y cuando el código existente es «casi adecuado» para la tarea, los programadores novatos pueden no ser capaces de resistir la tentación de copiar y pegar el código pertinente. Y en algunos casos, el programador es simplemente demasiado perezoso para ordenar el desorden.

## Payoff

* Fusionar el código duplicado simplifica la estructura de tu código y lo hace más corto.
* Simplificación + brevedad = código más fácil de simplificar y más barato de mantener.
## Relations

**Treated by**

- [Extraer método](/es/extract-method.md)
- [Subir campo](/es/pull-up-field.md)
- [Subir el cuerpo del constructor](/es/pull-up-constructor-body.md)
- [Formar Método Plantilla](/es/form-template-method.md)
- [Sustituir algoritmo](/es/substitute-algorithm.md)
- [Extraer superclase](/es/extract-superclass.md)
- [Extraer clase](/es/extract-class.md)
- [Consolidar expresión condicional](/es/consolidate-conditional-expression.md)
- [Consolidar fragmentos condicionales duplicados](/es/consolidate-duplicate-conditional-fragments.md)


## Detected by

- **sonar** `S4144` — Los métodos no deberían tener implementaciones idénticas (https://rules.sonarsource.com/java/RSPEC-4144/)
- **eslint** `sonarjs/no-identical-functions` — Las funciones no deberían tener implementaciones idénticas (https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/no-identical-functions.md)
- **pmd** `cpd` — CPD (Detector de Copiar/Pegar) (https://pmd.github.io/pmd/pmd_userdocs_cpd.html)
- **eslint** `sonarjs/no-all-duplicated-branches` — Todas las ramas de un condicional no deberían tener la misma implementación (S3923) (https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/no-all-duplicated-branches.md)
- **sonar** `S1192` — Los literales de cadena no deberían duplicarse (https://rules.sonarsource.com/java/RSPEC-1192/)
