Älä toista itseäsi ( KUIVA ; englanniksi " älä toista itseäsi") on ohjelmistokehityksen periaate , jonka tarkoituksena on vähentää erilaisten tietojen toistoa, erityisesti järjestelmissä, joissa on monia abstraktiokerroksia . DRY-periaate on muotoiltu seuraavasti: "Jokaisella tiedolla on oltava ainutlaatuinen, johdonmukainen ja arvovaltainen esitys järjestelmässä" [1] . Sen muotoili Hunt Dave Thomas kirjassaan Pragmatic Programmer . He sovelsivat tätä periaatetta tietokantaskeemoihin, testisuunnitelmat, ohjelmistoversiot, jopa dokumentaatio " [2] . Kun DRY-periaatetta sovelletaan onnistuneesti, järjestelmän yksittäisen elementin muuttaminen ei vaadi muutoksia muihin, loogisesti toisiinsa liittymättömiin elementteihin. Loogisesti toisiinsa liittyvät elementit muuttuvat ennustettavasti ja yhtenäisesti. Koodissa menetelmien ja funktioiden käytön lisäksi Thomas ja Hunt pitävät tarpeellisena käyttää koodigeneraattoreita, automaattisia käännösjärjestelmiä.
DRY-periaate, joka tunnetaan myös nimellä Single Source of Truth mallipohjaisissa arkkitehtuurijärjestelmissä , joissa ohjelman artefaktit erotetaan pääobjektimallista ja ilmaistaan muodossa, kuten UML . DRY-koodi luodaan käyttämällä tietojen muuntamista ja koodigeneraattoreita, joiden avulla ohjelmistokehittäjä voi välttää leikkaamisen, kopioinnin ja liittämisen . Yleensä tämän periaatteen mukaan kirjoitettu koodi helpottaa suurten tietojärjestelmien hallintaa. Työkalut, kuten XDoclet ja XSLT , DRY-ohjelmointitekniikoista Esimerkkejä järjestelmistä, jotka vaativat tietojen päällekkäisyyttä, ovat Enterprise Java Beans -versio 2, joka vaatii päällekkäisyyttä Java -koodin lisäksi myös asetustiedostoissa.
Esimerkkejä järjestelmistä, jotka yrittävät poistaa päällekkäisiä tietoja ovatSymfony , web2py , Yii , Django , Ruby on Rails [3] [4] , Phalcon - kehykset , Visual Studio LightSwitch ja Enterprise Java Beans version 3 kehykset.
DRY-periaatteen rikkomuksia kutsutaan WETiksi - "Kirjoita kaikki kahdesti" ( venäjä. Kirjoita kaikki kahdesti ) [5] tai "Nautimme kirjoittamisesta" ( rus. Pidämme tulostamisesta ). Tämä on leikki englanninkielisillä sanoilla "dry" ( venäjänä kuiva ) ja "wet" ( venäjänä wet ).