お世話になります。
ジェネリックを積極的に使い保守性の高いコードを記述したいと思うのですが、
具体的な使うタイミングが思いつきません。
このようなときに使えばよい、このようにすればきれいにまとめられる等
ご意見ください。
クラス、メソッドに対するジェネリックの使うタイミングを教えていただけたらと思います。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
私の場合は継承と組み合わせて使うケースが多いです。
具体的な例の方が分かりやすいと思い、サンプルコードを書いてみました。
こうしておくとファイル保存処理などを共通化できるので、保守性が高くなるかと思います。
さらに発展させると、型Tのプロパティを取得・列挙して、型に応じたCSV自動生成なども可能です。
ただ、エンティティを配列やDataTableなどで扱っているとこのパターンは適用できないですね…
何かのアイデアになれば幸いです。
lang
1'CSV変換ユーティリティクラス 2Public MustInherit Class CsvBuilderBase(Of T) 3 'CSVの保存 4 Public Sub Save(items As IEnumerable(Of T), filePath As String) 5 '文字列の作成 6 Dim sb As New Text.StringBuilder 7 '件数分ループ 8 For Each i In items 9 '1行の書き込み 10 sb.AppendLine(Me.GetCsvString(i)) 11 Next 12 13 '保存処理 14 ---(省略)--- 15 End Sub 16 17 'CSV1行の文字列を作成 18 MustOverride Function GetCsvLine(item As T) As String 19End Class
lang
1'Class1をCSV変換するクラス 2Public Class Class1CsvBuilder 3 Inherits CsvBuilderBase(Of Class1) 'CSVBuilderBaseを継承 4 5 Public Overrides Function GetCsvLine(item As Class1) As String 6 'CSV1行の文字列を作成 7 Return String.Format("""{0}"",""{1}""", item.Code, item.Name) 8 End Function
投稿2015/03/06 04:34
総合スコア58
0
MSDNの Visual Basic におけるジェネリック型 にも概略説明があります。ジェネリックに記述された1つのコードから、データ型毎の実体がコンパイラによって自動生成されるため、重複コードが減って保守性向上につながります。
ジェネリック型はさまざまなデータ型に対して同じ機能を実行するために必要な処理を行う、1 つのプログラミング要素です。 ジェネリック クラスまたはジェネリック プロシージャを定義すると、同じ機能を実行させる各データ型に対して、その機能を別々に定義する必要がありません。
通常のメソッド(プロシージャ)では、その引数の「値」をパラメータ化(=外部指定可能)することで、ちょっとづづ振る舞いが異なるメソッド群を用意せずとも、1つのメソッド実装コードの振る舞いを変更できます。
同様に、ジェネリック・メソッド(プロシージャ)では、その引数の「データ型」をパラメータ化することで、データ型だけが異なるメソッド群を用意せずとも、1つのジェネリック・メソッド実装コードの振る舞いを変更できます。
通常のクラスとジェネリック・クラスの関係も同様です。ジェネリック・クラスでは「データ型」をパラメータ化し、1つのジェネリック・クラス実装コードの振る舞いを変更できます。例えば、同一データ型の複数データを格納するコレクションクラスで利用されます。(扱うデータ型だけが異なるが、振る舞いは同じ。間違ったデータ型ではコンパイルエラーにしたい。)
投稿2015/03/07 02:30
総合スコア6191
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/03/06 16:06