最近話題の「テスト駆動開発」を購入した。
- 作者: Kent Beck,和田卓人
- 出版社/メーカー: オーム社
- 発売日: 2017/10/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
第一部はJava + Junitで書かれているが、さすがにそのままJavaで書き写しても面白くないので、Scala + ScalaTestで書き直した。
最近欠かさず聞いているajito.fmではgoで写経する話が出ていた。
ちなみに本を読む前に、和田卓人さんがゲストで出演している第13回は一通り聞いておいた方が、この本へ接する姿勢が明確になって非常に良いで、ぜひ聞いて欲しい。
とりあえず2日間ほどかけて第一部の第1章〜第11章までを、Scalaで実装してみた。第12章から機能追加が始まるので、一端ここで区切り。
メンバ変数のスコープ制御の考え方の違いとか、case classを使えばequalsの実装が不要になるとか、scalatestのassertマクロの種類とか、意外と引っかかるポイントが有って、思ったより先に進まなかった。
だけど、一度実装した物を、成功するテストを元にガシガシ書き換えていく感じ(最後には、最初に作ったはずのクラスが2つとも無くなってしまう)は、けっこう新鮮だった。
全然15年前の出版であることを感じさせないのは、きっとこれが根源的な行為だからなんだろうな。
とはいえ、一人でこれを継続するのはなかなか厳しそうなので、複数人・複数言語・ファシリテータ付きで一日かけて、あーでもない、こーでもないと言いながら進めていくのが良さそう。
最初は凄く回りくどく感じるかもしれないけど、「歩幅の調整」というキーワードで詳しく解説されているし、前述のajito.fmでもその話が出てくる。
とりあえずテストコードを書いたことが無い人は、一度第一部だけでもいいので、Java以外の言語で写経しながら進めると良いかも。