我目前正在阅读 Rober Martin (UncleBob) 的“清洁代码”,并且通常喜欢 UncleBob 的沉思。但是,当我读到他避免为“IPerson”之类的接口(interface)添加前缀时,我有点困惑。他说“我不希望我的用户知道我正在给他们一个界面”。
从 TDD/注入(inject)的角度思考,我总是非常有兴趣告诉我的类的“用户”我正在处理一个接口(interface)。主要原因是我认为系统的不同“代理”之间的接口(interface)契约。一个代理在我系统的一个角落工作,不应该知道另一个代理工作的具体实现;他们应该只交换契约(Contract),并期望在不知道如何履行的情况下履行契约(Contract)。另一个也是非常重要的原因是可以完全模拟接口(interface),从而使单元测试更加容易。你可以在一个具体的类上模拟多少是有限制的。
因此,我更喜欢想象我确实在处理一个接口(interface)......或者将一个接口(interface)作为参数。但由于 UncleBob 是我们社区中的重量级冠军,而我只是另一个蝇量级桌面骑师,我想知道我是否遗漏了什么。
我坚持我在接口(interface)中是错误的吗?
最佳答案
如果您在谈论 .NET,则与 I
接口(interface)一开始是如此无处不在,以至于丢弃它们会使每个人都感到困惑。
另外我宁愿有
public class Foo : IFoo {}
比
public class FooImpl : Foo {}
这一切都归结为个人喜好,我自己玩了一段时间,但我回到了
I
。字首。 YMMV
关于unit-testing - 在接口(interface)前加上 I?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5816951/