ClockRoom

VBScriptで☆ポリモーフィズム | 運営ノート

VBScriptで☆ポリモーフィズム

プログラミングの記事は久々かも。 仕事で担当のウェブアプリですが、度重なる改修で仕様が膨らみすぎて、いよいよヤバイんですよ。

こういうときにこそ大活躍してくれるのが、オブジェクト指向プログラミング!! ・・・なのですが、困ったことに、サーバ言語はJSPでもASP.NETでもありません。 昔ながらの「ASP+VBScript」なのです。 オブジェクト指向など知ったこっちゃない言語ですよ。

「知ったこっちゃない」と思われがちですが、実のところ、IIS5以降であれば、VBScriptでもクラスを利用することができます。 ただし、継承はできません。 う~ん、ないよりはマシですが、継承ができないと用途に限りがあります。

前置きはこれくらいに。 とにかく、切り替え型の動作仕様がてんこ盛りで、分岐、分岐、また分岐。 目も当てられません。 今こそオブジェクト指向プログラミングなのです。 ポリモーフィズムでスッキリさせるときなのです。 儚い夢なのか? 否。 VBScriptでポリモーフィズムはできます!!

インターフェース(メソッドやプロパティ)を統一したクラスを動作の種類の数だけ用意します。 継承はできません。 実装はすべて書きなおし。 面倒でも我慢。 一応、断りですが、言語仕様上、それぞれのクラスは無関係です。 継承関係ではないので当然ですね。

さて、ポイントはVBScriptの変数に「型」の概念がないこと。 これは欠点ですが、今回はこれを逆手に利用します。 型の概念がないため変数はなんでも入ります。 また、中身がなんであろうと、外見は変わりません。 ここですよ、ここ!!

要するに、中身が全く別物であっても、インターフェースが同一であればエラーにはならない。 言語は中身など“知ったこっちゃない”のです。 というわけで、変数をひとつだけ用意して、条件に応じて先のクラスを選択して代入します。

あとはよろしいですね。 普通のポリモーフィズムと同様、条件など気にせず、統一のコードを実装すればいいのです。 前述のウェブアプリへ実装したところ、かなり綺麗に片づきました。 やはり、部屋もコードも綺麗なのが一番ですね。。。

コメント

はじめまして。VBScriptでデザインパターンの適用を考えて行き詰っていましたが、「型の概念がない」ことの記述を読んで道が開けました。ありがとうございます。 当方の現在の案件もASP+VBScriptです。

yossy | 2014/05/31 09:42

お役に立てたなら嬉しい限りです。 いまだにASP+VBScriptなど使わされるとは、お互い苦労しますね(^^;

ときかけうさぎ | 2014/05/31 12:25
名前
内容
送信

※URLを含むコメントはできません。