【发布时间】:2015-03-30 22:53:08
【问题描述】:
这是一个相当简单的问题,两者都可以。但我只是想知道最佳实践是什么。当子类更改基类中的变量时。它应该调用属性还是只是更改基础变量。
我没有使用该属性来处理数据。子类中的代码是相同的。但是什么被认为是 OOP 方面的最佳实践呢?
示例代码:
Public Class TestDirect
Protected temp As Integer
End Class
Public Class TestChldDirect
Inherits TestDirect
Public Sub New()
MyBase.temp = 1
End Sub
End Class
对
Public Class TestProperty
Private _temp As Integer
'
Public Property temp() As Integer
Get
Return Me._temp
End Get
Set(ByVal value As Integer)
Me._temp = value
End Set
End Property
End Class
Public Class TestChldProperty
Inherits TestProperty
Public Sub New()
MyBase.temp = 1
End Sub
End Class
【问题讨论】:
-
直接设置的公共属性有什么问题?
-
我倾向于混合使用它们,尽管使用属性确实允许以后灵活使用。
-
您的灵活度究竟是什么?现在他们在这里,后来他们走了?
-
好吧,如果您从属性开始,而不是直接编辑。您可以在属性的 set/get 部分调用其他函数。如果您从直接编辑开始,则必须稍后将其转换为属性。工作量不大,但我认为值得考虑
-
虽然最佳实践肯定会将您指向方法 2(隐藏您的实现等),但还有一个论点是您现在不应该编写代码,因为以后可能需要它。但是有一些细微的区别: 1. 将字段更改为属性是一项重大更改(即,尽管调用代码保持不变,但任何调用代码都需要重新编译 - blogs.msdn.com/b/abhinaba/archive/2006/04/11/572694.aspx) 2. 反射区分字段和属性,因此如果你使用它可能会给你带来问题。
标签: vb.net oop properties