わたしにとってのクラスモジュール感
shokuren.hateblo.jp
上記の記事でクラスモジュールに関して触れてあるので,わたしも乗っかってみようと思いました。
いろんな人がいていいと思うので,正直なところを。
クラスモジュール=効率がいいというのはわたしも無いと思います。
クラスモジュール化の私なりの基準は,
① 要素数が多いデータの構造をクラスで書き,コレクションに収める場合
1レコードが1つのインスタンスで,それをたくさん作れる。
データ構造が変わっても,クラス部分をすこしいじれば対応できています。
② インスタンスをたくさん作り,それぞれ個別に何かしないといけない場合
熱運動の時たくさんの粒に自由に運動させる。一粒一粒がクラスモジュールにより独立して運動させたりできる。
標準モジュールのみで書くなら,各粒子の座標等の属性を全部同時に制御する必要があり,大変でした。
③ あまりにも部品数が多く,部品部品を切り分けないとわけがわからなくなりそうな場合
変数の把握も大変なくらい全体が膨れ上がる場合は,部品部品に分け,変数をカプセル化で隠すことで他の部品の変数を気にせず使える。カプセル化せずにPublicで宣言してた時はクラスにしてもメリットがわかりませんでした。
標準モジュール等でもそうですが,モジュールを分けると変数の宣言が増え,コードの行数は確実に増えますよね。引数に使うことでいくらか減らせますが,それでもまぁ増える。
標準モジュールのみでそれをやると,変数の数がどんどん,どんどん膨れ上がりますが,クラスモジュールを使い,なおかつ内部の変数を隠すところまでやれば,変数の把握がとてもすっきりします。
各部品ごとにほぼ独立させられるというのはとても魅力で,外から見える情報を必要なもののみに限定していかないと,個人的にはクラスのメリットは無いと考えています。
部品をきちんと独立させられているクラスモジュール利用のプロジェクトでは,何か不具合が起こったときや,仕様変更をする際も,基本は外部と影響はないので部品のみメンテで対応でき,容易に解決できていると感じています。
いつもOption Explicitをして,コードを書いていますが,これなくしてもVBAなら勝手に変数判断してくれるし,
宣言すら無くしてしまいたいなーと思うことが多々あるんですが,素人ですので,想定外に変数の型が変化したりしていて,VBAがコンパイル時に止まって
「ここ,君が思っているようにウゴイテイナイミタイダヨ?」
と教えてくれて助かっています。
部品化,インスタンス化,そのコードのみに限らず何度も繰り返し使うときはやっぱりクラスはいいなぁと 個人的には思いますね。。
配列のみで大量のデータを扱うのは正直具合悪くなりますので,クラス+コレクションでデータを扱うことの便利さには非常に感謝しています。(ΦωΦ)
覚えたてで,あまり良いコーディングができているわけでないのでおこがましいところも多々あるかもしれませんが,素人ならではの意見として書いてみました。