書籍
来たよケントベック先生(Smalltalker で XP 開発の始祖様)!
読もうと思ったきっかけ
テスト駆動開発…って聞いた時の自分の知ってる知識は
- ユニットテストを最初に書いて、以下を定義する
- どう動くべきか
- どう書きたいのか
- つまりコードが仕様書なんだ
- テストを通る様に実装する
でしかなかった。
要するに 我流な TDD のイメージ を持ってたわけだ。
なので、改めて勉強してみるのもいいかなと
意識 Before/After
Before
我流TDD 的に考えていれば、テストを書く前の段階からこうしておく必要があると思い込んでた
- どういった機能が必要なのかを事前に設計しなければならない
- インターフェースの定義や、設計の有るべき論を定義してかかるべきである
だから テスト駆動は難しい ので スキルのあるチームでないと出来ない事だ とそう 勝手に思い込んでいた 。
After
ああ、TDD とは 設計まで対象にリファクタを行う 開発様式だったのかと初めて知った。
基本の1サイクルは以下の通り。
- テストを書く
- コンパイルを通す(空実装)
- テストを走らせて失敗を起こす
- テストを通す
- 重複の排除
ただしこれを、1モジュールあたり以下のフェーズで行う。
- 最低限必要とすべき機能を定義する(実装は適当でいい)
- リファクタ(テスト上、内部変数の変化をチェックする様な使い方は微妙とか、インターフェースの見直し)
- オブジェクトとして見た時に、他に必要な物がないかの観点でインターフェース定義
- テストコードのリファクタ
- テストのバリエーション(こんな時はどうあるべきよ?)の作成
- テストから見た同一概念操作の抽出
- 派生型/類似型などの隠蔽化(クラスの同一化か派生クラスの削除など…)
- 不要となったテストの除去
何てこった、 実装だけじゃない、 インターフェース…使い方までサイクルに入ってるやんけ
ざっくり内容と見所
- 第一部: 金額の取り扱いクラスについてTDDの実装を行ってみる(ハンズオン)
- 第二部: xUnit (ユニットテストのほぼデファクトスタンダード)の構成と、考え方(ハンズオン)
- 第三部: テスト駆動パターン(読み物)
- テスト駆動で記述するテストの種類
- テスト手法のパターン
- 仮実装から本実装へのリファクタを行うテスト修正パターン
- xUnit の技法
- デザインパターン(!?まさかの設計パターン)
- リファクタリング手法
- TDD の身につけ方
という構成。
手を動かさないと退屈という自分にはすごく有り難い構成でした。
ってーか
第三部盛り過ぎでしょ(汗
消化不良ならもう何でも関連資料漁る位は当然しますけどさ…(汗
本気で第三部だけで1冊出ても良いと思いました。第三部だけでも技法技術大好きっ子には (^q^)
ですよマジで…