我没有多少课程,所以我认为这是初学者的问题。
我有一个具有以下属性的类:
Private pAvtalsslut As Date
''''''''''''''''''''''
' Avtalsslut property
''''''''''''''''''''''
Public Property Get Avtalsslut() As Date
Avtalsslut = pAvtalsslut
End Property
Public Property Let Avtalsslut(Value As Date)
pAvtalsslut = Value
End Property
当我将属性值设置为此类的对象时,我在我的潜艇中使用以下验证:
If IsDate(exportWks.Cells(r, lColumnAvtalsslut)) Then
avtal.Avtalsslut = exportWks.Cells(r, lColumnAvtalsslut)
End If
我这样做是因为否则当我读取的单元格为空时我会收到错误。
当我从这个类的对象中获取属性值时,我在我的潜艇中使用以下验证:
If avtal.Avtalsslut <> 0 Then
wUnderlag.Cells(row, 3) = avtal.Avtalsslut
End If
我这样做是因为我不想在没有日期的地方写零。在这种情况下,我希望将单元格留空。
现在回答我的问题。这些验证有哪些最佳实践?我应该把我的班级还是我的班级?如果他们应该在我的班上,那应该怎么看?
(PS。验证这些检查的正确词汇量吗?)
答案 0 :(得分:3)
一般来说,最好让类在获取或设置属性之前验证数据,然后在数据不符合规范时引发错误。这样,您无需在使用课程时在代码库中重复验证代码。
但是,在这种情况下,您尝试避免类型不匹配错误。因此,您需要将属性类型更改为Variant
而不是Date
,然后您会惊讶并混淆使用您的课程期望提供/接收日期的任何人。如果您需要将它用于任何但读取/写入扩展表单的内容,这会违反最少惊喜的原则并使该类无用。
所以,都没有。让我们选择C。
创建第二个类(例如,MyClassReaderWriter
),其作用是在现有类和电子表格之间充当中介。这允许两件事。