Don't repeat yourself

DRY je zkratka anglického výrazu Don't repeat yourself (tj. „Neopakuj se“). Jedná se o princip vývoje softwaru zaměřený na snižování počtu duplicitních informací všeho druhu. Tento princip je nejlépe použitelný u vícevrstvé architektury aplikací.[zdroj?] Princip DRY byl formulován Andym Huntem a Davem Thomasem v knize Programátor pragmatik, kde je popsán poměrně zeširoka tak, aby ho bylo možné aplikovat mimo jiné na databázová schémata, testovací plány, systém pro build aplikací, nebo dokonce dokumentaci. V případě, kdy je princip DRY správně používán, nedochází při změně v jedné části systému k nutnosti změn v ostatních logicky nepropojených částech.

Používání principu DRY

Tato filozofie, známá také jako Single Source of Truth (definuje přístup, při kterém jsou data strukturována tak, že se v aplikaci nacházejí právě jednou), je uplatňována převážně v modelem řízených aplikacích,[zdroj?] ve kterých jsou jednotlivé části odvozeny z jednoho centrálního modelu, vyjádřeného například pomocí UML. Kód využívající princip DRY je vytvořen pomocí transformace dat a generátorů kódu,[zdroj?] což vývojáři umožňuje vyhnout se copy & paste operacím. Princip DRY pomáhá zachovávat rozsáhlé softwarové systémy jednoduše udržovatelné právě proto, že transformace dat jsou jednoduché na vytvoření a následnou údržbu. Nástroje jako XDoclet či XSLT jsou příkladem využití principu DRY. Příklady systémů, které se pokoušejí redukovat duplicitní informace pomocí principu DRY, zahrnují například webové frameworky Symfony, web2py, Yii, Play Framewok, Django, Nette Framework, dále také vývojová prostředí EiffelStudio, Ruby on Rails, Microsoft Visual Studio LightSwitch nebo Enterprise Java Beans version 3.

DRY vs. WET

Porušení principu DRY (v angličtině suchý) se často označují zkratkou WET (v angličtině mokrý) neboli Write everything twice! (tj. „Piš vše dvakrát“), či We enjoy typing (tj. „Zbožňujeme psaní“).

Reference

V tomto článku byl použit překlad textu z článku Don't repeat yourself na anglické Wikipedii.

    This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.