10.5. Poprawianie błędów w „obcych” klasach

Problem

Dysponujemy klasą, której jedna z metod zawiera błąd. Wiemy, na czym błąd ten polega i w jaki sposób można go poprawić, nie chcemy jednak (lub nie możemy) ingerować w obcy kod źródłowy.

Rozwiązanie

Otwieramy definicję klasy, aliasujemy błędną metodę i pod jej oryginalną nazwą definiujemy poprawną wersję.

Oto jeden z opisanych przypadków: metoda Multiplier#podwojenie wbrew swojej nazwie zwraca trzykrotną, nie dwukrotną wartość argumentu:

class Multiplier
  def podwojenie(value)
    return value * 3 # Błąd!!!.
  end
end

m = Multiplier.new
m.podwojenie(6)                                   # => 18

Otwierając definicję klasy Multiplier, zmieniamy nazwę błędnej metody, po czym pod oryginalną nazwą implementujemy jej poprawną wersję. ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.