メソッド呼び出し時にモジュール名の記述を強制する
画期的なアイディア(嘘)
このときに、
モジュール名を指定しないと使えない、とかだったら便利だと思ったんだけどなあ。
とか書いていたんだが、画期的な解決法が思い浮かんだので記しておく。
同一メソッドを持つダミーモジュール
このときにも述べたことだが、2つ以上のモジュールに同一名のメソッド(プロシージャ)があると、メソッド名だけでは呼び出すことができない。
この習性を利用する。
このように、FoobarというモジュールとFoobar_というモジュールを用意する。
どうでもいいコードなので、画像だけ載せる。
まず、Foobarモジュールがコチラ。
Foobarモジュールのコードはコチラ。
んで、Foobar_モジュールがコチラ。
プロパティとかメソッドの中身だけ全部コメントアウトしてある。
使ってみる
次のコードで実行してみる。
リスト1 標準モジュール
Public Sub testFoobar() hoge Foobar.hoge Foobar.fuga End Sub
1行目は、単にhogeメソッドを呼んでいる。Foobarモジュールだけなら、フツーに実行できるはずだが、今回はFoobar_モジュールにもhogeメソッド(中身は空だけど)があるので、エラーになるはず。
2、3行目は、それぞれモジュール名を指定しているので、ちゃんと呼び出せるはず。
ちなみに、コード入力中は
このようにintellisenseが効く。便利。
実行すると、
予定どおりコンパイル・エラーになる。
意図どおり呼び出すことができた。当たり前だけれど。
おわりに
めちゃくちゃしょうもない対処法だけれど、これでメソッド呼び出し時にモジュール名付きで呼び出すことを強制できるのではなかろうか。
メソッド呼び出しに制約をかけることで、モジュールを多少細かく切り分けてもメインのコードの可読性が上がったりしないかなあ。