FizzBuzz 問題をいろいろな言語で書く

aereal/kata_fizz_buzz · GitHub

いろいろな言語で遊ぶためにはじめてみる。まずは Ruby で書きはじめてみた。

  • 同じ問題を違う言語で解く
  • 各言語ごとのテスト手法を知る

といったことを目的にしている。

FizzBuzz くらい簡単な問題にしておくといろいろ比較もしやすいと思う。

RSpec, 新しい構文を使うようにしてみたり、いままで [1, 2, 3].should be_all { ... } みたいに書いていた expectation を expect([1, 2, 3]).to satisfy {|v| v.all? { ... } } と書くと、expectation が失敗したときに差分をいいかんじに出力してくれることを知って、こっちのほうがよさそうだ、と気付くことができた。

RSpec くらいリッチなテストライブラリになると、(失敗したときの) 出力の扱いやすさから assertion の書き方が導かれることもある。だいたいの assertion はきれいかつ扱いやすく書けるようになっているので、失敗したときの出力が不親切だと思ったら、そもそも assertion の書き方を疑ったほうがよい、ということもある。

こういった学びが得られたので、簡単な問題を解きながらテストライブラリへ意識を向ける、というのは価値がある。

実際、FizzBuzz のコードは10秒くらいで書いて、30分くらいかけて新しい構文を知ってみたり改めて RSpec のドキュメントを読んでみたりして得るものは少なくなかった。