C# - 系统地添加一个接口是一个好习惯吗?

Amo*_*tir 10 c# interface

在我正在研究的项目中,我注意到每个实体类都有一个接口.似乎最初的动机是仅将接口暴露给其他项目/解决方案.

我发现这完全没用,我没有看到为每个类创建一个接口的重点.顺便说一下,这些类没有任何方法只是属性,并且它们没有实现相同的接口.

我错了吗?或者这是一个好习惯?

谢谢

Grz*_*nio 7

我倾向于为几乎每个类创建一个接口,主要是因为单元测试 - 如果你使用依赖注入并希望单元测试依赖于所讨论的类的类,那么标准方法是模拟所讨论的类的实例(使用其中一个模拟框架,例如Rhino-Mocks).但是,实际上它只能用于接口,而不是具体的实现(是的,理论上你可以模拟一个具体的类,但是有许多痛苦的限制).


Dav*_*vid 6

设置可能比此处描述的更多,这证明了接口的开销.通常它们对于依赖注入和关注点的整体分离,单元测试和模拟等非常有用.尽管它们在您的环境中不会被用于此目的(或任何其他建设性目的),但完全有可能. .

这是生成的代码,还是手动创建的?如果是前者,我怀疑生成它们的工具是这样做的,如果开发人员如此倾向于准备这样的用途.如果是后者,也许最初的设计师有一些想法?

对于我自己的"最佳实践",我几乎总是进行界面驱动的开发.将问题彼此分开并将接口用作它们之间的契约通常是一种很好的做法.

  • 一般来说,我同意YAGNI.作为一名企业开发人员,我的重点始终是"对业务有利"而不是"对代码有利".当然,企业并不总是明白两者往往是同一个:) (2认同)

Dan*_*zey 5

公开公开接口对于创建松散耦合的行为驱动架构非常有价值.

为每个类创建一个接口 - 特别是如果接口公开了该类在单个接口中的每个公共方法 - 是一个糟糕的概念实现,并且(根据我的经验)导致更复杂的代码并且没有改进体系结构.