私は単体テストやリファクタリングなどのクラスを教えてきましたが、これはおそらくほとんどの人が誤解していることです。リファクタリングはコードを変更するだけではありません。外部の機能的動作を変更せずにコードを変更しています。これは非常に重要なポイントです。
つまり、リファクタリング後に外部機能の動作が損なわれていないことを確認する何らかの方法が必要です。神聖な洞察が欠けているので、単体テストが非常に役立つと思います。Martin Fowler は、リファクタリングに関する著書の中で、この検証に自動テストを使用することを強調しています。
コードが TDD を使用して開発された場合は、コード自体の開発中に開発されるため、必要なテスト スイートがあります。テストが利用できないコードをリファクタリングする必要がある場合、コードに変更を加える前に自動テストを設定するのが最善の方法です。既存のコードのテストをセットアップするのは難しい場合があることは理解していますが、そうすることでコードについて多くのことを学ぶことができます。
Bruce Eckel の強力な型付けと強力なテストに関するエッセイも参照してください。コンパイラから得られるフィードバックとテスト スイートから得られるフィードバックについて説明しています。