Magnolia Tech

いつもコードのことばかり考えている人のために。

「テスト駆動開発」を購入し、Scalaで写経を始めた

最近話題の「テスト駆動開発」を購入した。

テスト駆動開発

テスト駆動開発

第一部はJava + Junitで書かれているが、さすがにそのままJavaで書き写しても面白くないので、Scala + ScalaTestで書き直した。

最近欠かさず聞いているajito.fmではgoで写経する話が出ていた。

ajito.fm

ちなみに本を読む前に、和田卓人さんがゲストで出演している第13回は一通り聞いておいた方が、この本へ接する姿勢が明確になって非常に良いで、ぜひ聞いて欲しい。

とりあえず2日間ほどかけて第一部の第1章〜第11章までを、Scalaで実装してみた。第12章から機能追加が始まるので、一端ここで区切り。

メンバ変数のスコープ制御の考え方の違いとか、case classを使えばequalsの実装が不要になるとか、scalatestのassertマクロの種類とか、意外と引っかかるポイントが有って、思ったより先に進まなかった。

だけど、一度実装した物を、成功するテストを元にガシガシ書き換えていく感じ(最後には、最初に作ったはずのクラスが2つとも無くなってしまう)は、けっこう新鮮だった。

全然15年前の出版であることを感じさせないのは、きっとこれが根源的な行為だからなんだろうな。

とはいえ、一人でこれを継続するのはなかなか厳しそうなので、複数人・複数言語・ファシリテータ付きで一日かけて、あーでもない、こーでもないと言いながら進めていくのが良さそう。

最初は凄く回りくどく感じるかもしれないけど、「歩幅の調整」というキーワードで詳しく解説されているし、前述のajito.fmでもその話が出てくる。

とりあえずテストコードを書いたことが無い人は、一度第一部だけでもいいので、Java以外の言語で写経しながら進めると良いかも。