将Ninject添加到遗留项目C#

将Ninject添加到遗留项目C#,c#,dependency-injection,ninject,C#,Dependency Injection,Ninject,我刚刚继承了一个遗留的C#&VB.Net项目,从现在起我将不得不对其进行维护和扩充 没有接口,显然也没有依赖注入 我想做的第一件事是创建接口并添加NInject,这样最终就可以对项目进行单元测试 这是一个好主意还是我应该不去管它 对于遗留项目,实现DI的最佳实践是什么 谢谢我认为除了使用常识之外,没有固定的最佳实践——这是一种逐案的情况。要问自己几个重要问题: 为当前类创建接口需要付出多少努力 要写出正确的代码还需要多少额外的努力 单元测试?这些单元测试会比花费的时间增加更多的价值吗 这个遗留

我刚刚继承了一个遗留的C#&VB.Net项目,从现在起我将不得不对其进行维护和扩充

没有接口,显然也没有依赖注入

我想做的第一件事是创建接口并添加NInject,这样最终就可以对项目进行单元测试

这是一个好主意还是我应该不去管它

对于遗留项目,实现DI的最佳实践是什么


谢谢

我认为除了使用常识之外,没有固定的最佳实践——这是一种逐案的情况。要问自己几个重要问题:

  • 为当前类创建接口需要付出多少努力

  • 要写出正确的代码还需要多少额外的努力 单元测试?这些单元测试会比花费的时间增加更多的价值吗

  • 这个遗留系统还能维持多久?有 没有什么比进行大规模升级更糟糕的了(不仅需要测试 由开发人员(但由产品用户)在 18个月

  • 还有,这个遗留系统已经存在多久了 没有问题?如果工作看起来稳定,就没有理由发明它 而且维护费用很低

我认为除了使用常识之外,没有一套最佳实践——这是一种逐案的情况。要问自己几个重要问题:

  • 为当前类创建接口需要付出多少努力

  • 要写出正确的代码还需要多少额外的努力 单元测试?这些单元测试会比花费的时间增加更多的价值吗

  • 这个遗留系统还能维持多久?有 没有什么比进行大规模升级更糟糕的了(不仅需要测试 由开发人员(但由产品用户)在 18个月

  • 还有,这个遗留系统已经存在多久了 没有问题?如果工作看起来稳定,就没有理由发明它 而且维护费用很低

1)不多,这不是一个大系统,我已经确定了10多个实体2)这将是一个兼职项目,我可能不需要维持几个月,但我有一个预算来巩固它,还有一些空闲时间。3) 这个系统在不久的将来不会被更换,可能在10年内也不会被更换4)没有问题,主要是因为前开发人员知道所有的细节。。我不知道,而且客户愿意为我的学习期提供资金,所以我认为这是一个很好的方式。我认为所有这些都使它成为一个很好的国际奥委会候选人,除了第2点:他们希望你巩固它。我认为,仅仅为了做一些单元测试,重写代码要比重写代码更好地利用时间。从他们的角度来看,像性能、异常处理和附加度量之类的东西比只在代码更改(更为落后于场景)时执行的单元测试更有价值。@ RedSoxFred也可以考虑框架升级。这是一种简单的销售方式,可以保持“最新”,并确保它们不会留在完整的遗留系统中。其中一部分显然包括测试,这让你的IoC和单元测试成为一个好主意。我本来打算将框架升级到.Net 4.0(从2.0开始),我想我的工作已经完成了。1)不多,这不是一个大系统,我已经确定了10多个实体2)这将是一个兼职项目,我可能不需要维持几个月,但我有一个预算来巩固它,还有一些空闲时间。3) 这个系统在不久的将来不会被更换,可能在10年内也不会被更换4)没有问题,主要是因为前开发人员知道所有的细节。。我不知道,而且客户愿意为我的学习期提供资金,所以我认为这是一个很好的方式。我认为所有这些都使它成为一个很好的国际奥委会候选人,除了第2点:他们希望你巩固它。我认为,仅仅为了做一些单元测试,重写代码要比重写代码更好地利用时间。从他们的角度来看,像性能、异常处理和附加度量之类的东西比只在代码更改(更为落后于场景)时执行的单元测试更有价值。@ RedSoxFred也可以考虑框架升级。这是一种简单的销售方式,可以保持“最新”,并确保它们不会留在完整的遗留系统中。其中的一部分显然包括测试,这使你的IoC和单元测试成为一个好主意。我本来打算将框架升级到.NET4.0(从2.0版),我想我的工作已经完成了。