掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
class内とForm内でのFunctionの違いを教えてください (ID:142916)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> Class Data > Public A As Integer > Public B As Integer > End Class > このclassの内容を使ってA+Bの計算をするFunctionを作成 そのクラス/構造体が持つ意味によって異なるかと思います。 データを表すオブジェクトと計算処理とを、分離した方が良いものや、 分離せざるを得ない場合もあるでしょう。ただ、クラス名「Data」が、 メンバ名「A」「B」を統括する名前になっているのであれば、 関連する処理はクラス内に実装しておいた方が分かりやすい事が多いかと。 たとえば、 Public Class 有効期間 Public 開始日時 As Date Public 終了日時 As Date End Class に対して、期間(2つの日付の差)を TimeSpan 型として取得したいとすれば、 算出処理は、このクラス上に実装しておくという実装パターンもあるでしょう。 このような実装パターンは、例えば、Rectangle 構造体などに見ることができます。 Rectangle を New する際には、左上の座標と矩形領域のサイズは指定しますが、 右下の座標は指定しません。しかし、Rectangle 構造体が内部でそれを計算して、 Right / Bottom プロパティとして公開するようになっていますよね。 また、インスタンスメンバーとして実装するパターン以外にも、 Rectangle.Inflate や Rectangle.Union のように、 Shared として実装するような場合もあるかと思います。 実際に管理するデータにあわせて、適切と思えるパターンを選択してみてください。 > それぞれどういうメリット、デメリットが有るのでしょう。 メリット、デメリットというわけではありませんが、API や COM など、 外部にマーシャリングされる可能性があるクラスや構造体では、 新たなメンバを追加することが制限される事があります。 (ただし、ある程度は属性等で制御する事ができます) > 処理速度、メモリ使用量など変わってくるのでしょうか? 微妙に変わりますが、それは実装手法とは別の話として検討した方が良いでしょう。 パフォーマンスを気にするのであれば、実際にそれぞれの実装にて処理してみて、 どの程度の差があるのかを実際に測定してから検討してみてください。 大きな差が出るようであれば、実装手法を変更する必要が出るかも知れませんが、 ごく僅かな差しか出ないなら、パフォーマンスの差を気にするよりも、 「実装が容易な方」「使いやすい/わかりやすい方」「修正しやすい方」など、 都合が良いと思われるパターンを選択していけば良いかと思います。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.