レガシーコード改善ガイド1〜5
1、ソフトウェアの変更
ソフトウェアで一番重要なのは振る舞い。
コードの変更で振る舞いが変わるか否かが重要。
変更の影響の把握が非常に大変であるが、振る舞いを変えないためには重要。
既存の振る舞いを変えずに設計を改善することをリファクタリングという
2、フィードバックを得ながらの作業
「変更して祈る」のリスクは、注意力を高めても、結果が比例しないこと。
テストハーネスとは
テスト用に動かすために書くコード
優れたテストの条件
* 実行が速い
* 問題箇所が特定しやすい
* ロジック部分がテストに近い
* 1メソッド1機能に気をつけてるとよろしい
単体テストに含まれない条件
* DBとやりとりする
* ネットワーク通信が有る
* ファイルシステムにアクセスする
* 環境設定を必要とする
上記の理由は外部の要素に依存するため、実行環境に依ってテスト結果が変わる可能性があり
テストの根本目的であるコードの保護がされてない状態になるためである。
他のコードとの依存関係を取り除くには
依存部分をインターフェース化してモックを使えるようにする
3、検出と分離
検出→コードの計算した値にアクセス出来ない時に、それを検出するために依存関係を排除する。
分離→コードをテストハーネスに入れて実行すらできない時、分離するために依存関係を排除する
検出のためのTips
目的:テストしたい対象があり、その対象の役割にフォーカスする。そして他との依存関係を排除する。
擬装オブジェクト
呼び出しをインターフェース化し、実際テストに使われるオブジェクトは同じインターフェースの全くの別物を使う。
副産物として、別物はテスト用なのでテストのためのメソッドを準備しても構わない。内部的にロギングさせたり。
4、接合部
接合部とはその場所を直接変更しなくとも、振る舞いをかえられるポイント
本番環境では実行されるべきだがテストでは実行されて欲しくないところのモッキングが厳しい場所や、
ポリモーフィズムを使いたいポイントでかなり有効に使うことが出来る。
5、ツール
スキップ