1

我在这里阅读了几个问题,似乎普遍的共识是项目中的每个类都不需要接口。我读过这样的帖子:为每个类提取接口是最佳实践吗?.

我想知道这如何应用于 .NET 框架类。我相信我看过的所有类要么继承自抽象类,例如 SQLConnection 继承自 dbConnection,要么实现和接口,例如 Component 类实现 IComponent 接口。

我有一个 Reflector 的副本,我在两个月前下载了它,我正在等待许可证(最近支付了费用)。当我开始单步执行代码时(使用反射器);我会看到这样的代码吗:

Public Class Foo
    Public Name As String
    Public Property NameProperty()
        Get
            Return Name
        End Get
        Set(value)
            Name = value
        End Set
    End Property

    Public Shared Sub Main()
        Dim f As Foo = New Foo
        f.NameProperty = "Ian"
    End Sub

End Class

而不是这样的代码:

Public Class Foo
    Implements IFoo
    Public Name As String
    Public Property NameProperty() Implements IFoo.NameProperty
        Get
            Return Name
        End Get
        Set(value)
            Name = value
        End Set
    End Property

    Public Shared Sub Main()
        Dim f As IFoo = New Foo
        f.NameProperty = "Ian"
    End Sub

End Class

Public Interface IFoo
    Property NameProperty()
End Interface

请注意,第二个代码片段中使用了一个接口。我仍然在努力理解什么时候不适合使用接口。一些开发人员说永远不会。我想其中一些是主观的。

4

1 回答 1

1

作为一个努力以正确方式做事的人,每次我开始一个新项目时,我都会为此苦苦挣扎。我开始意识到这主要是主观的。比如说“哪些日子可以不洗澡”。

当然它提供了抽象,提高了可测试性等,但它会导致不必要的“类爆炸”。根据我的经验,向辅助内部类添加接口弊大于利。我偶尔会打开几年前做的一个小项目,并为我无穷无尽的课程列表感到震惊……过度设计!

通常,我在类库中使用 API 接口。除此之外,如果时间允许,我会添加它们,或者我特别需要澄清客户端代码应该如何调用一段代码。

于 2013-03-12T16:01:48.290 回答