October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk4 min

Pourquoi ton code sent le copier-coller : comprendre le principe DRY

DRY vise la duplication de connaissance et d’intention, pas chaque ligne qui se répète. Voici comment repérer les règles à centraliser sans créer d’abstractions inutiles.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Le principe DRY (« Don’t Repeat Yourself ») ne demande pas d’éliminer chaque répétition de code. Il invite à donner une représentation unique et faisant autorité à chaque élément de connaissance ou d’intention du système. Si une même règle doit être modifiée à plusieurs endroits, elle risque de diverger; si deux blocs se ressemblent sans exprimer la même règle, les fusionner peut au contraire compliquer le code.

Ce que DRY veut vraiment dire

Dans The Pragmatic Programmer, David Thomas et Andrew Hunt formulent le principe ainsi : « Every piece of knowledge must have a single, unambiguous, authoritative representation within a system. » Autrement dit, chaque élément de connaissance doit avoir une représentation unique, sans ambiguïté et faisant autorité dans le système. Ils précisent que DRY porte sur la duplication de connaissance et d’intention, y compris lorsque la même chose est exprimée de façons différentes. Lire l’extrait officiel consacré à DRY.

As an Amazon Associate I earn from qualifying purchases.

Cette distinction compte : deux portions de code identiques peuvent répondre à des règles métier différentes; inversement, une même règle peut être répétée dans du code, une documentation ou un schéma, sans que les formulations se ressemblent. DRY concerne cette connaissance dupliquée, pas une ressemblance visuelle prise isolément.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Comment savoir si une répétition pose problème

Pose-toi la question du changement : si cet aspect du système évolue, faudra-t-il le modifier à plusieurs endroits ou sous plusieurs formes? Si oui, ces représentations peuvent être des copies d’une même connaissance. Une mise à jour oubliée risque alors de laisser des versions contradictoires.

  • Même règle, plusieurs occurrences : une règle de validation ou un calcul identique est maintenu séparément dans plusieurs fonctions. Si chaque changement doit les garder synchronisés, une représentation partagée peut être préférable.
  • Même apparence, règles différentes : deux blocs se ressemblent aujourd’hui, mais leurs comportements doivent évoluer indépendamment. Les réunir dans une abstraction commune pourrait cacher leur différence et lier des changements qui ne devraient pas l’être.
  • Même connaissance, formats différents : une contrainte présente dans la documentation et dans un schéma peut devoir rester cohérente, même si ces deux représentations n’ont pas la même forme.

Le nombre d’occurrences, à lui seul, ne décide pas s’il faut abstraire. Le critère utile est de déterminer si les éléments expriment la même connaissance et doivent évoluer ensemble, plutôt que de compter les lignes ou les ressemblances.

Quand plusieurs représentations sont nécessaires

Il n’est pas toujours possible, ni souhaitable, de n’avoir qu’une forme physique d’une règle. Une contrainte de base de données ou de middleware peut imposer plusieurs représentations. Dans ce cas, l’objectif est de désigner clairement celle qui fait autorité et, lorsque c’est possible, de produire les autres à partir de cette source. Dave Thomas décrit cette approche dans son article pour IEEE Software : « Ideally, you’d be able to automatically generate or produce the nonauthoritative sources from the single authoritative source. » Lire l’article de Dave Thomas.

La question pratique devient alors : quelle représentation est la source de vérité, et lesquelles en sont des dérivées? Si les copies ne peuvent pas être générées automatiquement, il faut au moins savoir qu’elles doivent rester synchronisées et où les mettre à jour.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Un test simple avant de créer une abstraction

  1. Identifie la règle : décris en une phrase la connaissance ou l’intention que chaque occurrence exprime.
  2. Compare leur évolution : si la règle change, ces occurrences doivent-elles toutes changer ensemble?
  3. Choisis une source faisant autorité : si elles représentent bien la même chose, envisage une fonction, un module ou une autre représentation partagée adaptée au contexte.
  4. Garde les différences explicites : si les règles peuvent évoluer séparément, conserve des implémentations distinctes plutôt que de les forcer dans une abstraction commune.

Ce test traduit la portée du principe décrite par Thomas et Hunt; ce n’est pas une règle mécanique imposant une abstraction dès qu’un motif apparaît deux fois.

Pourquoi la chasse au copier-coller peut mal tourner

Éliminer toute répétition apparente peut produire des abstractions trop générales, rendre les règles métier moins lisibles ou faire dépendre des comportements distincts d’un même mécanisme. DRY n’est donc pas une consigne de compression du code. Il s’agit de rendre visible où se trouve la connaissance qui fait autorité et d’éviter de maintenir séparément plusieurs versions de la même intention.

Le bénéfice attendu est une cohérence plus claire et une maintenance mieux organisée. Les sources consacrées au principe ne fournissent pas de statistique permettant de lui attribuer un pourcentage garanti de réduction des bogues ou du temps de développement.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Pour approfondir

The Pragmatic Programmer: Your Journey to Mastery, de David Thomas et Andrew Hunt, est disponible dans son édition du 20e anniversaire publiée en septembre 2019. La page de l’éditeur présente une section intitulée « DRY—The Evils of Duplication » et répertorie des formats imprimé et numérique : page officielle de l’édition anniversaire. Pour une autre présentation du principe, Steve Smith lui consacre le chapitre 30 de 97 Things Every Programmer Should Know : aperçu du chapitre chez O’Reilly.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.