Attributy: id="DRY"
Princip Don't Repeat Yourself, česky „neopakuj se“, je tak důležitý, že jej zmiňuji na prvním místě. Prolíná se většinou ostatních pravidel, nebo zněj tato pravidla přímo vycházejí. Nosná myšlenka tohoto principu je, že žádá věc, ať již kód, hodnota, znalost, …, se nemá v programu opakovat dvakrát. Každá myšlenka je specifikována jen jednou na jednom místě.
Výhody tohoto principu jsou na snadě. Pokud modifukujeme program, provádíme úpravu jen na jednom místě, a nemusíme vzpomínat, kde ještě musíme v kódu provést změnu.
Velmi jednoduchým a snadno pochopitelným příkladem jsou konstanty. Mějme následující kód:
avatar = Movie.new('Avatar', 2) ironsky = Movie.new('Iron Sky', 1) alexander = Movie.new('Alexander the Great', 0)
Někde dále v programu s pak podle zadané číselné hodnoty rozhodujeme:
@price = case price_code when 0: RegularPrice.new when 1: NewReleasePrice.new when 2: ChildrensPrice.new end
Takových rozhodování a použití informace filmu může být v programu více. Nevýhodou takového kódu je prezentace znalosti které číslo jaký typ filmu znamená je roztroušena po celém programu. Pokud „schováme“ znalost o typu filmu do konstant, vyhovíme principu DRY.
REGULAR = 0 NEW_RELEASE = 1 CHILDRENS = 2 ⋮ avatar = Movie.new('Avatar', CHILDRENS) ironsky = Movie.new('Iron Sky', NEW_RELEASE) alexander = Movie.new('Alexander the Great', REGULAR) ⋮ @price = case price_code when REGULAR: RegularPrice.new when NEW_RELEASE: NewReleasePrice.new when CHILDRENS: ChildrensPrice.new end