フィードバックを得ながらの作業を意識しよう
システム変更の方法
- 編集して祈る
- 計画、調査、確認を注意深く進める必要がある
- 保護して変更する
- テストで保護する = 確実なフィードバックを得る
単体テストが重要
- システムの振る舞いから見て最も原始的な単位
- 手続き型 -> 関数
- オブジェクト指向 -> クラス
- 優れた単体テストの条件
- 実行が速い(0.1秒では遅すぎる)
- 問題箇所の特定がしやすい
- これらは単体テストではない
- データベースとやりとりする
- ネットワークを介した通信をする
- ファイルシステムにアクセスする
- 実行するために特別な設定が必要(環境設定ファイルの編集など)
上位レベルのテスト
- レガシーコードでは、どこからテストを開始すべきか
- 変更に関係しそうな部分のテストを優先的に用意せよ
レガシーコードの変更手順
- 変更点を洗い出す
- テストを書く場所を見つける
- 依存関係を排除する
- テストを書く
- 変更とリファクタリングを行う