我在哪里放置所有这些接口?

dev*_*xer 25 c# unit-testing dependency-injection interface project-organization

我试图通过单元测试来弄湿我的脚.我目前不习惯为类编写接口,除非我预见到某些原因我需要交换不同的实现.好吧,现在我预见到一个原因:嘲笑.

鉴于我将从几个接口转到可能数百个接口,首先突然出现的是,我应该把所有这些接口放在哪里?我只是将它们与所有具体实现混合在一起,还是应该将它们放在子文件夹中.例如,控制器接口应该在根/控制器/接口,根/控制器或其他完全?你有什么建议?

Ree*_*sey 20

在我讨论组织之前:

好吧,现在我预见到一个原因:嘲笑.

你也可以用类来模拟.子类化很适合作为选项进行模拟,而不是总是创建接口.

接口非常有用 - 但我建议只在有理由制作接口时才创建接口.我经常看到当一个类工作正常并且在逻辑方面更合适时创建的接口.您不应该仅仅为了让自己模拟实现而制作"数百个接口" - 封装和子类化对此非常有效.

话虽如此 - 我通常会将我的接口与我的类一起组织,因为将相关类型分组到相同的命名空间往往最有意义.主要的例外是接口的内部实现 - 这些可以在任何地方,但我有时会创建一个"内部"文件夹+一个内部命名空间,我专门用于"私有"接口实现(以及纯粹内部实现的其他类) ).这有助于我保持主命名空间整洁,因此唯一的类型是与API本身相关的主要类型.


Chr*_*way 10

这里有一个建议,如果你的几乎所有接口都只支持一个类,只需将接口添加到同一个名称空间下的类本身.这样你就没有一个单独的接口文件,它可能会使项目变得混乱,或者需要一个仅用于接口的子文件夹.

如果你发现自己使用相同的界面创建不同的类,我会将界面分成与类相同的文件夹,除非它变得完全不守规矩.但我不认为这会发生,因为我怀疑你在同一个文件夹中有数百个类文件.如果是这样,那应该根据功能进行清理和子文件夹,其余的将自行处理.