Это плохая практика для прямого доступа к элементу данных? - PullRequest
3 голосов
/ 26 июля 2010

Я помню, как профессор сказал мне, что это плохая практика. Но это делает обход кода менее утомительным. Я просто прошу комментировать плюсы и минусы:

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 ]

4 голосов
/ 26 июля 2010

Если вы установили свойство для доступа к закрытой переменной-члену "isEmpty", тогда да, я бы использовал это свойство внутри самого класса, если нет веских причин не делать этого.

Причина в том, что вам может потребоваться проделать дополнительную работу, когда свойство установлено (или, возможно, при получении), и тогда вам, вероятно, придется найти все ссылки на приватный член.переменная в вашем классе и измените их, чтобы получить доступ к свойству.

3 голосов
/ 27 июля 2010

Чтобы добавить к ответу Эда, некоторые IDE позволяют вам установить флаг, говорящий о том, что вы не хотите погружаться в свойства getter / setters, подобные этому. Я не знаю о VB, но C # / VS2008 сделает это. Таким образом, удобство «шаг за шагом» исключается из уравнения при решении, что делать правильно.

0 голосов
/ 27 июля 2010

Это действительно сводит на нет его инстинкт и опыт разработчика.Если вы уверены, что вам никогда не потребуется выполнять какую-либо обработку этого свойства, я говорю, обращайтесь к нему напрямую.В противном случае напишите обертку, это на самом деле не повредит.

Хотя добавить его позже никогда не было так уж сложно.Я бы не стал слишком религиозен в отношении любого из этих методов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...