
Suché, mokré, horké, studené. To jsou přece jen slova, ne? Jsem tu, abych vám řekl, že mohou být něčím víc.

Většina, ne-li všichni programátoři jistě slyšeli o pojmech DRY a WET, které se týkají kódu. Pojďme však nejprve prohlásit, co tyto zkratky znamenají, aby nikdo nebyl špatně informován.
DRY – Don’t Repeat Yourself
WET – Write Everything Twice
Přemýšlejte chvíli… Která zkratka zní jako lepší postup při kódování? Pokud vás vaše tušení postrčilo k DRY, měli byste pravdu. No, v 90 % případů.
Jako programátor usilujete o to, aby váš kód byl DRY, tedy aby se neopakoval, což je obecně nejlepší postup. Jsou však případy, kdy vám přidání trochy vlhkosti do kódu může usnadnit život.
Nejprve se podívejme na příklad každého z nich.
Tady je ukázka, jak vypadá kód WET: (
class John
def build(n)
n + 1
end def destroy(n)
n - 1
end
end class Peter
def build(n)
n + 1
end
end
Všimli jste si místa Write Everything Twice?
V tomto případě mají obě třídy, John & Peter, možnost používat metodu build. Pokud bychom však v budoucnu chtěli provést změnu v metodě build, museli bychom ji provést dvakrát, a to na každém místě, kde je metoda build použita.
Na druhou stranu, pokud by byl kód DRY, museli bychom tuto změnu provést pouze jednou. V tomto případě by použití modulu mohlo pomoci udržet náš kód DRY:
module Builder
def build(n)
n + 1
end
endclass John
include Builder def destroy(n)
n - 1
end
endclass Peter
include Builder
end
Použití modulu umožňuje oběma třídám možnost sestavení. A John si samozřejmě stále zachovává svou metodu destroy.
Udržování DRY kódové základny je nejvíce užitečné tam, kde předpokládáte poměrně časté změny. Mít DRY kód znamená, že tyto změny musíte provést pouze v jedné nebo několika málo oblastech, a ne na všech místech, kde se tento kód může používat.
Možná nejdůležitější je, že mít DRY kód snižuje možnost vzniku chyb. Představte si, že je třeba provést změnu identického kódu na pěti různých místech, ale vy zapomenete změnit kód na jednom z těchto míst… Vidíte ten problém? Buď váš program spadne, nebo, což je možná ještě horší, použije zastaralý postup, a přitom se bude tvářit normálně.
Přesto má WET kód své přednosti. Pokud předpokládáte, že se identický kód později rozvětví různými směry, může vám WET kód tuto budoucí změnu usnadnit.
Příliš DRY kód navíc může způsobit bolest hlavy dalšímu programátorovi, který váš kód použije, což můžete být i vy. To může pramenit z provádění zdlouhavého množství logických skoků za účelem zjištění faktorů, které hrají roli v konkrétním řádku kódu.
Jak již bylo řečeno, jako obecné pravidlo platí: udržujte svůj kód DRY, lidi. Vy zítřka to oceníte.