Subscribed unsubscribe Subscribe Subscribe

鳩舎

レースしない

引数

引数、変数によってオブジェクトに適切な名前を与えるのはあたりまえのことです。

class Calc
  def plus(x, y)
    x + y
  end
end

calc = Calc.new
calc.plus(1, 2)

この場合、 #plus の中で 1x2y と名前付けがされており、それぞれ加算式の左の項と右の項として名前が与えられている。

これは実は抽象化が足りていなくて、本来なら 1.plus(2) と呼び出されるべき場面で、その場合 2 に相当する適切な名前は多分 y ではなく another_number とかそういう名前になる。

class Number
  def plus(another_number)
    self + another_number
  end
end

ではこれが『値段』オブジェクトだったらどうか、という場合もある。

class CashRegiser
  attr_reader :total_price

  def plus(price)
    @total_price += price
  end
end

レジで計算するときは基本加算だけで済むので、とにかく何らかの金額を加算してくことになる。

cachier = CashRegister.new
cachier.plus(Potato.new.price)
cachier.plus(Pasta.new.price)

いますごく安直に pirce とか名前つけてるけど、これは本当に price でいいのか、とか、そういうことを延々考えてる。

こんがらがってきた。

Remove all ads