0

我的代码库中有我不熟悉的代码,我正在寻找清理和锁定测试用例。

我面临的问题是

A) 编写它的开发人员已不在公司,看起来没有使用任何标准,也没有进行代码审查,所以甚至没有评论(变量名为 a、b 和 c,函数为 200行长...呃)

B) 编写它的开发人员有一个方钉圆孔的心态(即“嘿,我刚刚了解到的这个新功能真的很酷,我想我会滥用它”)

C) 重写其功能是非常混乱、无证和不平凡的任务

也就是说,代码是意大利面条,我缩小了一个部分,该部分进行了大量的 Reflection.Emit 调用以动态生成执行工作的 dll。完成手头的任务是难以置信的,但请参见 B) 点。

有一半的人想说“忘记这个”,然后重写代码,这样我就可以通过测试将其锁定。另一半想挽救那里的东西,因为我知道它有效,我的客户每天都使用代码,这并不容易。

有没有办法做类似下面的事情?

foreach(Assembly a in AppDomain.CurrentDomain.GetAssemblies())
{
    if(IS_Assembly_IM_LOOKING_FOR(a))
    {
        SaveToFile(a, @"C:\Temp\MyAssembly.dll")
    }
}

这样我就可以拥有程序集的“锁定”版本,并且可以单独为它编写单元测试,并且通过意外修改动态创建它的代码而破坏它的几率为 0%?

4

1 回答 1

0
  1. 您可以修改创建程序集的代码,以便将其保存到磁盘(请参阅此 SO 问题
  2. 您也可以使用调试器(例如 WinDbg)成功地做到这一点,它可以将程序集从内存转储到文件中。
于 2013-01-13T08:48:52.970 回答