---
title: "Code dupliqué"
type: "code-smell"
slug: "duplicate-code"
url: "http://localhost:3000/fr/smells/duplicate-code.md"
category: "Dispensables"
description: "Deux fragments de code se ressemblent presque à l'identique."
---
# Code dupliqué

> Deux fragments de code se ressemblent presque à l'identique.

## Signs and Symptoms

Deux fragments de code se ressemblent presque à l'identique.

## Reasons for the Problem

La duplication se produit généralement lorsque plusieurs programmeurs travaillent en même temps sur différentes parties du même programme. Comme ils travaillent sur des tâches différentes, ils peuvent ne pas savoir que leur collègue a déjà écrit un code similaire qui pourrait être réutilisé pour leurs propres besoins.

Il existe aussi une duplication plus subtile, lorsque des parties de code précises semblent différentes mais accomplissent en réalité le même travail. Ce type de duplication peut être difficile à repérer et à corriger.

Parfois, la duplication est intentionnelle. Lorsqu'ils se précipitent pour respecter les délais et que le code existant est « presque parfait » pour la tâche, les programmeurs débutants peuvent ne pas résister à la tentation de copier-coller le code pertinent. Et dans certains cas, le programmeur est tout simplement trop paresseux pour faire le ménage.

## Payoff

* Fusionner le code dupliqué simplifie la structure de votre code et le rend plus court.
* Simplification + concision = code plus facile à simplifier et moins coûteux à maintenir.
## Relations

**Treated by**

- [Extraire une méthode](/fr/extract-method.md)
- [Remonter le champ](/fr/pull-up-field.md)
- [Remonter le corps du constructeur](/fr/pull-up-constructor-body.md)
- [Constituer une méthode patron](/fr/form-template-method.md)
- [Remplacer l’algorithme](/fr/substitute-algorithm.md)
- [Extraire une superclasse](/fr/extract-superclass.md)
- [Extraire une classe](/fr/extract-class.md)
- [Regrouper une expression conditionnelle](/fr/consolidate-conditional-expression.md)
- [Regrouper les fragments conditionnels dupliqués](/fr/consolidate-duplicate-conditional-fragments.md)


## Detected by

- **sonar** `S4144` — Methods should not have identical implementations (https://rules.sonarsource.com/java/RSPEC-4144/)
- **eslint** `sonarjs/no-identical-functions` — Functions should not have identical implementations (https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/no-identical-functions.md)
- **pmd** `cpd` — CPD (Copy/Paste Detector) (https://pmd.github.io/pmd/pmd_userdocs_cpd.html)
- **eslint** `sonarjs/no-all-duplicated-branches` — All branches in a conditional should not have the same implementation (S3923) (https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/no-all-duplicated-branches.md)
- **sonar** `S1192` — String literals should not be duplicated (https://rules.sonarsource.com/java/RSPEC-1192/)
