VB.Net中的类设计

时间:2013-02-13 02:50:24

标签: vb.net

-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对象,但这似乎是逻辑上倒退的。任何建议?对不起,如果它令人困惑。

3 个答案:

答案 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