直接访问数据成员是不好的做法吗?

时间:2010-07-26 19:56:28

标签: vb.net language-agnostic vba vb6

我记得教授告诉我,以下是不好的做法。但它使得逐步执行代码变得不那么繁琐。我只是在征求关于利弊的评论:

Friend Class MyClass
 Private isEmpty As Boolean
 Public Property IsEmpty() As Boolean
  Get
   Return isEmpty
  End Get
  Set(ByVal Value As Integer)
   isEmpty = value
  End Set
 End Property
 Public Sub MyMethod()
  ''//Is this more correct:
  If Me.IsEmpty() Then
   ''//Do something.
  End If
  ''//Is this bad practice?:
  If isEmpty Then 
   ''//Do something.
  End If
 End Sub
End Class 

3 个答案:

答案 0 :(得分:4)

如果你已经设置了一个属性来访问私有成员变量“isEmpty”,那么我会使用类本身内部的属性,除非有一个很好的理由不这样做。

原因是您可能在以后的某个时间点需要在设置属性时(或者可能在检索时)执行更多工作,然后您可能必须在您的属性中找到对私有成员变量的所有引用类并更改它们以访问该属性。

答案 1 :(得分:3)

要添加到Ed的答案,一些IDE允许您设置一个标记,表示您不想潜入这样的属性getter / setter。我不知道VB,但C#/ VS2008会这样做。因此,在决定什么是正确的事情时,需要通过“代码”方便的步骤。

答案 2 :(得分:0)

它确实降低了它作为开发人员的本能和经验。如果你是超级肯定的,你将永远不需要对该属性进行任何处理,然后我说直接访问它。否则写下包装器,它并没有真正受到伤害。

尽管如此,以后添加它也从未如此重要。我对这两种方法都不会过于虔诚。