0

-編集- これは、私が設計している金融 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」の結果は似ています。結果値のタイプごとにクラスを作成することを考えていました (これらは結果のタイプですが、互いに異なる概念であるため) などの結果クラス内で...

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 オブジェクトに依存するため、Results オブジェクトを最初にインスタンス化する必要があります。しかし、ユーザーはオブジェクト a、b などを見て、最初に親オブジェクトを作成する必要があることをおそらく知りません。

クラスを分けて、各コンストラクターが Result オブジェクトを作成することを考えましたが、それは論理的に逆のようです。何かアドバイス?紛らわしかったらごめんなさい。

4

3 に答える 3

0

2つの簡単な推奨事項。

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 に答える
0

Abstract クラスを Result にして、継承構造の ResultTypeA、ResultTypeB などを作成してみませんか? 問題の詳細がないため、意味のある答えを出すのは非常に困難です。

于 2013-02-13T20:42:54.000 に答える
0

最初のインデックスが結果のクラス (文字 'a' や 'b' など) で、2 番目のインデックスが結果の番号 (a1 や z2 など) である単一の 2 次元整数配列を使用しないのはなぜですか?

于 2013-02-13T02:54:46.690 に答える