「テスト駆動開発」を読んだ
たぶん有名なケントベックのテスト駆動開発を読んだ。
前に TDD でやってみようと思ってうまくいかなかった経験があって、それから長いこと TDD をやっていなかった。 今めちゃくちゃ時間があるので、せっかくならちゃんと勉強してみようと思って読んでみた。
TDD に興味を持った理由
TDD の場合はテストを先に書く都合上、小さい仕様に分解してコードを組みててていくことが多いように思う。
自分の場合どうも余計なことを考え過ぎてしまうことが多々あり、手が進まなくなることがある。
テストを先に書かないにしても、考え方として自分の開発に取り入れられる気がしていて、自分のマイナスポイントを補える開発手法なのではないかと感じた。
普段どんなふうにコードを書いているのか
改めて考えてみたけど、まずは大枠の設計を紙に書いてみる。
その後頭の中にあるコードを先にざっと書いてしまって(その時点で動くかどうかはあまり気にしない)、その後にどんどんテストを書いていく。
テストを走らせてまず間違いなくこけるので、エラーになった箇所を修正してその後リファクタをするという流れが多い気がした。
読んでみて
TDD Boot Camp 2020 Online で t_wada さんの TDD ライブコーディングを見たことがあって、まさにその内容だなと思ったのが最初の感想。 正直ライブコーディングで見た方がより動きがわかりやすいので、まずはこっちをみてみると良いと思う。
ただこのライブコーディングの題材が FizzBuzz ということもあり、本の題材の方が難しい内容。
書き進めていくうちに初めに書いていたクラス自体削除することになったり、設計も変わってきたりするのでより実践的な内容。
読者にわかりやすいように時にはかなり細かく進めてくれていたので、TDD 自体がタスクを分割するという訓練になるなと感じた。
変わったこと
ちょくちょく AtCoder をやることがあるのだけども、その際に今までよりも小さく始めることができるようになった (気がする) もちろん競プロの問題にテストを書くわけではないので、TDD をやっているわけではない。ただ、頭の中で小さくテストをするかのように、まずはこの仕様を満たして次にこれでと言うのが前よりもできるようになっている。 新しいエッセンスを取り入れるとはこう言うことかと感じた。