VBScriptで☆ポリモーフィズム
プログラミングの記事は久々かも。 仕事で担当のウェブアプリですが、度重なる改修で仕様が膨らみすぎて、いよいよヤバイんですよ。
こういうときにこそ大活躍してくれるのが、オブジェクト指向プログラミング!! ・・・なのですが、困ったことに、サーバ言語はJSPでもASP.NETでもありません。 昔ながらの「ASP+VBScript」なのです。 オブジェクト指向など知ったこっちゃない言語ですよ。
「知ったこっちゃない」と思われがちですが、実のところ、IIS5以降であれば、VBScriptでもクラスを利用することができます。 ただし、継承はできません。 う~ん、ないよりはマシですが、継承ができないと用途に限りがあります。
前置きはこれくらいに。 とにかく、切り替え型の動作仕様がてんこ盛りで、分岐、分岐、また分岐。 目も当てられません。 今こそオブジェクト指向プログラミングなのです。 ポリモーフィズムでスッキリさせるときなのです。 儚い夢なのか? 否。 VBScriptでポリモーフィズムはできます!!
インターフェース(メソッドやプロパティ)を統一したクラスを動作の種類の数だけ用意します。 継承はできません。 実装はすべて書きなおし。 面倒でも我慢。 一応、断りですが、言語仕様上、それぞれのクラスは無関係です。 継承関係ではないので当然ですね。
さて、ポイントはVBScriptの変数に「型」の概念がないこと。 これは欠点ですが、今回はこれを逆手に利用します。 型の概念がないため変数はなんでも入ります。 また、中身がなんであろうと、外見は変わりません。 ここですよ、ここ!!
要するに、中身が全く別物であっても、インターフェースが同一であればエラーにはならない。 言語は中身など“知ったこっちゃない”のです。 というわけで、変数をひとつだけ用意して、条件に応じて先のクラスを選択して代入します。
あとはよろしいですね。 普通のポリモーフィズムと同様、条件など気にせず、統一のコードを実装すればいいのです。 前述のウェブアプリへ実装したところ、かなり綺麗に片づきました。 やはり、部屋もコードも綺麗なのが一番ですね。。。