56.1. DRY

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
Licence Creative Commons
Tento dokument Ruby, jehož autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .