Gentag ikke dig selv ( DRY ; fra engelsk - "do not repeat yourself") er et softwareudviklingsprincip , der har til formål at reducere gentagelsen af information af forskellig art, især i systemer med mange abstraktionslag . DRY-princippet er formuleret som: "Hvert stykke viden skal have en unik, konsekvent og autoritativ repræsentation i systemet" [1] . Det blev formuleret af Hunt Dave Thomas i deres bog Pragmatic Programmer . De anvendte dette princip på " databaseskemaer , testplaner, softwarebuilds, endda dokumentation " [2] . Når DRY-princippet anvendes med succes, kræver ændring af et enkelt element i systemet ikke ændringer til andre, logisk ikke-relaterede elementer. De elementer, der er logisk relaterede, ændrer sig på en forudsigelig og ensartet måde. Udover at bruge metoder og funktioner i kode, anser Thomas og Hunt det for nødvendigt at anvende kodegeneratorer, automatiske kompileringssystemer.
DRY-princippet, også kendt som Single Source of Truth i modeldrevne arkitektursystemer , hvor programartefakter uddrages fra hovedobjektmodellen og udtrykkes i en form som UML . DRY-kode er oprettet ved hjælp af datakonvertering og kodegeneratorer, der gør det muligt for softwareudvikleren at undgå klip-, kopierings- og indsættelsesoperationer . Normalt gør kode skrevet efter dette princip det nemmere at styre store informationssystemer. Værktøjer som XDoclet og XSLT DRY-programmeringsteknikker Eksempler på systemer, der kræver kopiering af information, er Enterprise Java Beans version 2, som kræver duplikering ikke kun i Java -kode, men også i konfigurationsfiler.
Eksempler på systemer, der forsøger at eliminere duplikering af information erSymfony , web2py , Yii , Django , Ruby on Rails [3] [4] , Phalcon frameworks , Visual Studio LightSwitch og Enterprise Java Beans version 3 frameworks.
Overtrædelser af DRY-princippet kaldes WET - "Skriv alt to gange" ( rus. Skriv alt to gange ) [5] eller "Vi nyder at skrive" ( rus. Vi kan godt lide at udskrive ). Dette er en leg med de engelske ord "dry" ( russisk tør ) og "våd" ( russisk våd ).