VB Classes Best Practice - дать все значения свойств? - PullRequest
0 голосов
/ 16 марта 2010

Извините, если это немного случайно, но является ли хорошей практикой присваивать значение всем полям класса при его создании? Мне просто интересно, лучше ли иметь конструктор, который не принимает параметров и дает всем полям значения по умолчанию, или же поля, которые имеют значения, должны быть назначены, а другие оставлены в покое, пока не потребуются?

Надеюсь, это имеет смысл, Бекки

Ответы [ 4 ]

1 голос
/ 16 марта 2010

Конструктор вашего класса должен принимать достаточно параметров, чтобы быть в пригодном для использования состоянии.

Вы можете получить ту же функциональность, которую вы, похоже, ищете, используя Optional Параметры в своем конструкторе.

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

Sub Notify(ByVal Company As String, Optional ByVal Office As String = "QJZ")
   If Office = "QJZ" Then
      Debug.WriteLine("Office not supplied -- notifying Headquarters")
      Office = "Headquarters"
   End If
   ' Code to notify headquarters or specified office.
End Sub

Помните, что необязательные параметры должны быть после всех необязательных параметров.

0 голосов
/ 16 марта 2010

Это зависит. Как вы собираетесь использовать класс? Какова цель класса? (т.е. это класс сущностей для моделирования базы данных или какой-то другой класс)

Я всегда делаю свои классы сущностей со значениями NULL, которые все равны NULL, когда класс создается с помощью конструктора, который не принимает параметров. Затем, когда я вызываю .Load, я знаю, что все свойства отражают базу данных.

Добавление конструктора, который вызывает .Load и назначает все свойства, известные значения из базы данных, также будет возможным маршрутом.

Если вы не имеете в виду класс моделирования сущностей, то это действительно зависит от того, как вы используете этот класс.

Мое личное предпочтение - присвоить всем свойствам известное значение (из параметров конструктора), и поэтому класс находится в известном нейтральном состоянии.

0 голосов
/ 16 марта 2010

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

Public Class MyClass
    Private pIsDirty As Boolean = False
    Private pDated as Date = Now()
End Class

Имейте в виду, что большинство "простых" типов, таких как булевы, целочисленные и т. Д., Имеют автоматическую настройку по умолчанию и НЕ ДОЛЖНЫ инициализироваться, но я показываю это здесь в качестве примера, а иногда для ясности, вы все равно хотите его. Кроме того, поскольку все классы, которые я пишу, предназначены только для внутреннего использования (мы не продаем какие-либо объекты кода для публичного использования), я могу быть уверен, что потребители моих классов. Поэтому я, как правило, просто пишу минимальный конструктор (если нужен не по умолчанию), который принимает только основные поля, и раскручиваю любые дополнительные значения с новым синтаксисом With в VB следующим образом:

Dim myObj = New SomeClass() With { .Prop1 = "value", .Prop2 = Now() }
0 голосов
/ 16 марта 2010

Идеальная практика - иметь объект в рабочем состоянии, как только возвращается конструктор. Это уменьшает количество ошибок, при которых частично «готовый» объект непреднамеренно используется.

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