-Edit-这是我正在设计的财务API。我正在创建一些空类,感受一般结构。我主要关注的是设计愉快的用户体验,而无需手册来解释如何使用它。 - 结束编辑 -
我一直在试图想出设计特定课程的最佳方法。我将创建一个一般示例来说明。
Namespace SomeNamespace
Public Class Results
Public a1 as Integer
Public a2 as Integer
...
Public b1 as Integer
...
Public z1 as Integer
End Class
End Namespace
上面的示例是通用的,但重点是类中有许多值。变量名中的字母代表一组类似的结果。 “a”结果是相似的,“b”类似,等等。我曾想过在Results类中为每种类型的结果值(因为它们是一种结果,但彼此不同的概念)创建一个类,例如...
Public Class Results
Class a
Public a1 as Integer
End Class
Class b ... End Class
End Class
问题在于,当一个人使用该课时
并不明确Dim ResultObject as new SomeNamespace.Results.a()
结果对象必须首先被实例化,因为任何子类a,b等都依赖于Results对象。但是用户会看到对象a,b等,并且可能不知道他们必须首先创建父对象。
我考虑过将这些类分开,每个构造函数都会创建一个Result对象,但这似乎是逻辑上倒退的。任何建议?对不起,如果它令人困惑。
答案 0 :(得分:0)
为什么不使用单个二维整数数组,其中第一个索引是结果类(即字母'a'或'b'等),第二个索引是结果编号(即a1或z2等) ?
答案 1 :(得分:0)
为什么不创建一个Abstract类Result并创建一个继承结构ResultTypeA,ResultTypeB等?由于没有关于这个问题的细节,很难给出有意义的答案。
答案 2 :(得分:0)
两个快速建议。
1)在课堂上,不要暴露你的领域。仅公开方法和属性。如果您使用自动实现的属性,只需在声明中添加Property关键字即可。否则,将您的字段声明为私有,并将该属性公开为public:
Public Class Foo
Private _V1 As Integer ' Backing field
Public Property V2 As Integer ' Auto Property
Public Property V1 As Integer ' With backing field
Get
Return _V1
End Get
Set (Value as Integer)
_V1 = value
End Set
End Property
End Class
2)不要嵌套你的类声明。而不是
Public Class Results
Class a
Public a1 as Integer
End Class
Class b ... End Class
End Class
执行以下操作:
Public Class Results
Public Property A1 As A
Public Property B1 As B
End Class
Public Class A
Public Property A1 As Integer
End Class
Public Class B
Public Property B1 As Integer
End Class
对于命名约定,您应将属性命名为名词和方法作为谓词。关于你的订购问题,我建议从类别(名词)开始,然后以越来越具体的术语添加形容词:
Property NameFirst As String
Property NameLast As String
Property ContactEmail As String
Property ContactPhoneHome As String
Property ContactPhoneWork As String