コードの外的振る舞いから内部実装を行うをやってみた
独学者としてはRubyの上達法というエントリはとても参考になります。今回は以下の記事で紹介されていた、コードの外的振る舞いから実装に落とし込む作業をしてみた。
Rubyをより良く書けるようになるための課題演習のつくりかた
作業時間は延べ2時間くらい?
class VendingMachine def initialize @money = 0 @sales = 0 @stock = {} @stock = {:cola=>{:price=>120, :stock=>5}} end def stock_info @stock end def store(drink) @stock[drink[0]] = drink[1] # カッコ悪いから書きなおす end def insert(coin) if coin == 10 or coin == 50 or coin == 100 or coin == 500 or coin == 1000 # カッコ悪いから書きなおす @money = coin + @money else puts coin end end def total @money end def refund @money = 0 end def purchasable_drink_names purchasable_drinks = [] @stock.each do |key,value| purchasable_drinks << key if @money >= value[:price] end purchasable_drinks end def purchasable?(drink) if @stock[drink][:price] <= @money puts "true" else puts "false" end end def purchase(drink) if @stock[drink][:price] <= @money @sales = @sales + @stock[drink][:price] @stock[drink][:stock] = @stock[drink][:stock] - 1 @money = 0 else nil end end def sale_amount @sales end end class Drink def self.redbull redbull = [:redbull,{:price=>200, :stock=>1}] end def self.water water = [:water,{:price=>100, :stock=>1}] end end
汚くてもかいちゃえって部分は自分でも実感しているので、スマートな方法をフィードバックされたらそら上手くなっていくよなーと思いました。独学のイマイチな部分ですね。