コードベースになじみのないコードがあり、テスト ケースでクリーンアップしてロックダウンしようとしています。
私が直面している問題は、
A)それを書いた開発者はもう会社にいなくて、標準は使用されておらず、コードレビューも行われていないようで、コメントすらありません(変数はa、b、およびcと名付けられ、関数は200です行が長い...うーん)
B) それを書いた開発者は、角ばった丸穴の考え方を持っていました (つまり、「ねえ、私が知ったばかりのこの新機能は本当にクールです。私はそれを悪用しようと思います」)
C) その機能を書き直すのは信じられないほど面倒で、文書化されておらず、重要な作業です。
とはいえ、コードはスパゲッティです。作業を実行する dll を動的に作成するために、大量の Reflection.Emit 呼び出しを行うセクションを絞り込みました。これは、目の前のタスクを達成するのに信じられないほどばかげていますが、ポイント B) を参照してください。
私の半分は、「これを忘れて」と言って、コードを書き直して、テストでロックできるようにしたいと思っています。残りの半分は、そこにあるものを救いたいと思っています。なぜなら、それが機能することを知っているからです。私の顧客は日常的にコードを使用しており、簡単ではないでしょう。
次のようなことをする方法はありますか?
foreach(Assembly a in AppDomain.CurrentDomain.GetAssemblies())
{
if(IS_Assembly_IM_LOOKING_FOR(a))
{
SaveToFile(a, @"C:\Temp\MyAssembly.dll")
}
}
アセンブリの「ロックダウン」バージョンを使用して、単体テストを個別に作成し、動的に作成するコードを誤って変更してアセンブリを壊す可能性が 0% になるようにするにはどうすればよいでしょうか?