В приведенном ниже примере, как бы вы назвали параметр, если он используется для инициализации свойства FromDate?
Для методов конструктора класса мне бы хотелось, чтобы имя переменной параметра конструктора совпадало с именемимущества, которое инициализируется.Например, параметр «fromDate» используется для инициализации переменной уровня модуля «_FromDate» с помощью оператора _FromDate = fromDate.Аналогично, я мог бы написать Me.FromDate = fromDate.
Сторонники чувствительности к регистру в C #, вероятно, сказали бы, что использование буквы в нижнем регистре для имени переменной параметра, которая, как я считаю, является соглашением MS, является приемлемым подходом, чтобы отличить его от свойства того же имени, но другогоcasing.
Однако VB не чувствителен к регистру, что я обычно ценю.В следующем примере я использую имя параметра, совпадающее с именем свойства «fromDate», а VB ссылается на локальный экземпляр при наличии неоднозначности. Однако многие, вероятно, утверждают, что эта «неоднозначность» предоставляет возможность для разработчикачтобы запутаться и не понять, какая переменная используется. Например, ниже у меня было намерение передать ДВА параметра, fromDate и toDate, но я случайно пропустил один, и в результате VB.NET не предупредилЯ ошибся, потому что предполагал, что оператор _ToDate = ToDate был эквивалентен _ToDate = Me.ToDate вместо того, чтобы сообщать мне, что переменная в правой части оператора присваивания была необъявленной.
Public Class Period
Property FromDate As Date
Property ToDate As Date
Public Sub New(ByVal fromDate As Date)
If fromDate > ToDate Then
Throw New ArgumentException("fromDate must be less than or equal to toDate")
End If
_FromDate = fromDate
_ToDate = ToDate
End Sub
End Class
Так чтоявляется лучшим решением для VB.NET?
По моему мнению, у нас должно быть соглашение о префиксе всех переменных параметров с префиксом, но разве Microsoft не препятствует использованию префиксов? Например:
Public Sub New(ByVal paramFromDate As Date, paramToDate As Date)
.. или, возможно, его можно сократить до pFromDate, pToDate ...
Какой бы подход ни был выбран, я чувствую, что это должен быть последовательный подход, который используется во всем приложении.
Что вы делаете?