Ruby+RSpecでFizzBuzz(with naokirin)
Rubyを使うのは久々です。
ペアプロに至ってはTDDBC名古屋以来です。
ということで、id:naokirin氏との初ペアプロ。
Rubyを選んだ理由は「二人共慣れていない言語」で、Fizzbuzzなのは「いきなりMotsunabeZombieProjectはきついよね」という理由。
以下、今回書いたコードです。
fizzbuzz_spec.rb
# -*- coding: utf-8 -*- require 'rubygems' require 'rspec' require 'fizzbuzz' describe FizzBuzz do [3,6].each do |num| it "should return 'Fizz' for multiples of three(#{num})" do FizzBuzz.new(num).says.should == "Fizz" end end [5,10].each do |num| it "should return 'Buzz' for multiples of five(#{num})" do FizzBuzz.new(num).says.should == "Buzz" end end [15,30].each do |num| it "should return 'FizzBuzz' for multiples of three and five(#{num})" do FizzBuzz.new(num).says.should == "FizzBuzz" end end it "should return number for no multiples of three or five(1)" do FizzBuzz.new(1).says.should == "1" end end
fizzbuzz.rb
# -*- coding: utf-8 -*- class FizzBuzz def initialize(number) @number = number end def says if @number % 3 == 0 && @number % 5 == 0 then "FizzBuzz" elsif @number % 3 == 0 then "Fizz" elsif @number % 5 == 0 then "Buzz" else @number.to_s end end end
itに仕様を書くかcontextを使ってitを省略しつつ記述するかで迷いましたが、話し合いの結果上記の形になりました。
もう少し何とかできないものかと思いつつ、今の力ではこんなところなのかな。
なお、今回はEmacs+Gitという環境です。
保存の度にgit nowしていたので49回を記録している……typo多すぎた。