プロが教えるわが家の防犯対策術!

Excel VBAにおいて(他のプログラミングにも通じることでしょうが)、変数は可能な限り、プロシージャレベルを使うようにしています。
やはり上手な人は、プロシージャレベルの変数を中心に使い、モジュールレベルやパブリックレベルの変数はあまり使わないものでしょうか。
モジュールレベル・パブリックレベルの変数って、一番上に沢山書いていくと、プロシージャを記述するスペースを下に追いやってしまい、ソースが見苦しくなる気がします。上手な人は、そういうモジュールレベル・パブリックレベルの変数をいたずらに増やさないようにする、良い方法とかを持っているのでしょうか?それとも、上手な人でも、モジュールレベル・パブリックレベルの変数は、多くなる時は物凄く多くなったりするのでしょうか?

A 回答 (1件)

> モジュールレベル・パブリックレベルの変数って、一番上に沢山書いていくと、プロシージャを記述する


> スペースを下に追いやってしまい、ソースが見苦しくなる気がします

根本的な問題はそれではありません。
スコープ(つまり変数やメソッドなどの宣言部分)適用範囲が広くなればなるほど、
明確な責任範疇がわからなくなり、結果的に悪品質・バグの生み出し易いものが
出来上がるからです。

VBAでは各シート、標準モジュール、クラスが使えると思いますが、
最も悪なのは、以下がすべて当てはまることでしょう。
 ・何か処理を書きたい時に、何かにつけていつも標準モジュールを利用している。
 ・スコープの狭くていい変数、メソッドすらPublicに定義している。
 ・関係性のない変数、メソッドを全て同一の標準モジュールに組み込んでいる。


綺麗に書こうとする人たちは、まずそれがどういった分類にカテゴライズされるものなのかを
明確に切り分け、更にそれぞれの命令の責任範疇を明確にします。
責任範疇を切り分けて処理を細分化することによって、障害が発生した際の障害位置の特定と、
他のロジックへの影響力を小さくするからです。

上手な人は恐らく、よほどのことがない限り、変数が多くなるということはありません。
なぜなら、責任範疇を切り分けている時点で、変数の使用が限られるからです。

それでも変数が多くなる時は、それぞれの変数がどういった分類にカテゴライズされるのかを
再考し、クラスやメソッドを切り分けるべきか、1つのカテゴライズされた変数を1つ定義するか
などとなります。


こういった事柄は、一人でやっていても身に付きません。
なぜなら、一人さえ覚えていればなんら問題がないからです。
一人でやるとき、他人がコードを修正する、もしくは拡張して何かを追加する時には
どういったコードだと分かりやすいか、それを念頭に考えれば少しずつ綺麗になるし、
上手い人はどういうコードを書くのか、ネットで調べるのも勉強になります。
    • good
    • 0
この回答へのお礼

ありがとうございます。他人の書くコードをネットで見たりはしているのですが、サンプルのダウンロードなどもしてみようと思います。標準モジュールばかり利用していますが、それも考えなおしてみます。

お礼日時:2013/07/07 23:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!