0

-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 等都将依赖于结果对象。但是用户会看到对象 a、b 等,并且可能不知道他们必须首先创建父对象。

我考虑过将类分开,每个构造函数都会创建一个 Result 对象,但这在逻辑上似乎倒退了。有什么建议吗?对不起,如果它令人困惑。

4

3 回答 3

0

为什么不使用单个二维整数数组,其中第一个索引是结果类(即字母 'a' 或 'b' 等),第二个索引是结果编号(即 a1 或 z2 等)?

于 2013-02-13T02:54:46.690 回答
0

为什么不创建一个抽象类 Result 并创建一个继承结构 ResultTypeA、ResultTypeB 等?由于没有关于问题的详细信息,很难给出有意义的答案。

于 2013-02-13T20:42:54.000 回答
0

两个快速建议。

1)在课堂上,不要公开你的领域。只公开方法和属性。如果您使用自动实现的属性,只需在声明中添加 Property 关键字即可。否则,将您的字段声明为私有,并将其公开的属性声明为公共:

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
于 2013-02-13T21:18:05.363 回答