ここで私の質問は、このような一般的な関数を使用することによる悪影響は何ですか?この関数を呼び出すと動作し、テストコンソールモジュールでは完全にコンパイルされます。私はこれが強く型付けされた関数ではなく、%100の悪い習慣であることを知っています。しかし、それは...完璧に動作します。このような関数の目的は、型に応じて特定の形式で挿入する必要がある文字列入力を処理することです。私はまた、ここでstackoverflow上のいくつかの他の質問を読んで、(Of T)関数とそのようなバリエーションを使用することを指摘しています。どうしてこのようにしないのですか?まったく無しのクラスや大量のコードを作成しなくても、これを実現するもう1つの簡単な方法があります。私はこれがこれを扱う "エレガントな"方法ではないことを知っています。誰かが提案をしているなら、私はすべて耳にします。ありがとうございました! :)このような汎用関数を使用した場合のネガティブな影響?
Private Function ConvertFieldValueByType(ByVal type As Field_Type, ByVal value As String)
If type = Field_Type.FIELD_TYPE_DATE Then
Dim dt As Date = DirectCast(TypeDescriptor.GetConverter(New Date(1990, 5, 6)).ConvertFrom(value), Date)
Return dt
ElseIf type = Field_Type.FIELD_TYPE_DATETIME Then
Dim dt As DateTime = DirectCast(TypeDescriptor.GetConverter(New DateTime(1990, 5, 6)).ConvertFrom(value), DateTime)
Return dt
ElseIf type = Field_Type.FIELD_TYPE_BLOB Then
Return value
ElseIf type = Field_Type.FIELD_TYPE_LIST Then
Return value
ElseIf type = Field_Type.FIELD_TYPE_LONG Then
Return Convert.ToInt64(value)
ElseIf type = Field_Type.FIELD_TYPE_NUMBER Then
Return Convert.ToInt32(value)
ElseIf type = Field_Type.FIELD_TYPE_SHORT Then
Return Convert.ToInt16(value)
ElseIf type = Field_Type.FIELD_TYPE_STRING Then
Return value
ElseIf type = Field_Type.FIELD_TYPE_TIME Then
Dim dt As DateTime = DirectCast(TypeDescriptor.GetConverter(New DateTime(1990, 5, 6)).ConvertFrom(value), DateTime)
Return dt
ElseIf type = Field_Type.FIELD_TYPE_UNKNOWN Then
Return value
Else
Return value
End If
End Function
関数の上に「else else」があれば、それはどのように一般的ですか? –
seconded:ここでは「generic」というフレーズを避けることにします。その用語には具体的な意味があります。*これは*ではありません。 –
私はこれがhttp://en.wikipedia.org/wiki/God_objectアンチパターン – rerun