フィードバックを得ながらの作業を意識しよう システム変更の方法 編集して祈る 計画、調査、確認を注意深く進める必要がある 保護して変更する テストで保護する = 確実なフィードバックを得る 単体テストが重要 システムの振る舞いから見て最も原始的な単位 手続き型 -> 関数 オブジェクト指向 -> クラス 優れた単体テストの条件 実行が速い(0.1秒では遅すぎる) 問題箇所の特定がしやすい これらは単体テストではない データベースとやりとりする ネットワークを介した通信をする ファイルシステムにアクセスする 実行するために特別な設定が必要(環境設定ファイルの編集など) 上位レベルのテスト レガシーコードでは、どこからテストを開始すべきか 変更に関係しそうな部分のテストを優先的に用意せよ レガシーコードの変更手順 変更点を洗い出す テストを書く場所を見つける 依存関係を排除する テストを書く
![レガシーコード改善ガイド 第二章 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/73afe1a41aec3f32c141189fc0b4bea2cc3fafc8/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUUzJTgzJUFDJUUzJTgyJUFDJUUzJTgyJUI3JUUzJTgzJUJDJUUzJTgyJUIzJUUzJTgzJUJDJUUzJTgzJTg5JUU2JTk0JUI5JUU1JTk2JTg0JUUzJTgyJUFDJUUzJTgyJUE0JUUzJTgzJTg5JTIwJUU3JUFDJUFDJUU0JUJBJThDJUU3JUFCJUEwJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz04ZTJmZDc4MzZhN2UwM2JhNThjN2FkOWUyNjhkMjczMg%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwa2l5b2RvcmkmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWU0ZGQ3Nzc3M2RjYTMzZDMwMzAzN2NhYzc2NWU5OGZi%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D23802420f3ec300407b5324afe9cfc02)