C++の10年からRubyへの移行を追求して、私は自分が最も単純なものを達成する方法を2番目に推測していると感じます。以下の古典的な形の導出の例を考えてみましょう。これが "The Ruby Way"かどうか疑問に思っています。下のコードに本質的に間違っていることは何もないと私は思っていますが、私はRubyのフルパワーを利用していないと感じています。シェイプ継承の例と "The Ruby way"
class Shape
def initialize
end
end
class TwoD < Shape
def initialize
super()
end
def area
return 0.0
end
end
class Square < TwoD
def initialize(side)
super()
@side = side
end
def area
return @side * @side
end
end
def shapeArea(twod)
puts twod.area
end
square = Square.new(2)
shapeArea(square) # => 4
"Ruby Way"は実装されていますか?そうでない場合は、これをどのように実装しましたか?
私はこのようなことを嫌います。最初に 'def area ...'をタイプしないでください。それはすでにメソッドのエラーを発生させます。コメントを追加すると、サブクラスが適切に実装できるように 'area'がどうすべきかを記述する必要があります。 –