VBAの世界では「いい変数名を付けなさい!」だなんて、 実に気安く口にする人って多い思いますけど、、
ほんと、ネーミングをナメたらいけませんよ!(怒!)
先日もある読者の方から、
「aの変数に入れるなど奥が深いですよね。」
とのご感想を頂戴しましたが、
読者の皆さん、それ、わかってくれてます?
これは相当に、皆さんの可也想像を絶するほど、 実は奥深いです。
それで、
当講座のレッスンでは、マクロの作成中に変数を使う場合、 必ず、
a とか、b とか、c とか、・・・
For文のループを回す場合であれば、
i とか、j とか、・・・
ですね。
そのような極、ごく、短い変数名というのを、わざとそれ 必ずそのようにしています。
ベテランの読者の方であれば、その辺はもうよくご存じ かと思いますが、長い場合でも、a1とかa2とか、ですね。
それは、あえて「自称ネーミング評論家」である私がー と言うよりも、
富士通やらで長年教壇に立って、新人プログラマーを大勢 育てて来たわたくし三太郎が、あえてこのメルマガでは そう皆さんに教えてきたという次第です。
とにかく、これもこの方の感想にも書いてもらったように、 数々の奥深い理由があって、、のことであるわけですが、 (話し出すとまた長く、長ーくなりますんで、もし機会 あったら詳しく色々数々書いてみたいとは思っていますが、、)
とにかく、その数々の理由の中で一番、最も大事で肝心な ことと言いますのが、紛れもなく
「プログラミングの最中に思考を中断させてはなりません!」
これに尽きるわけです。
今回の新元号や、生まれてくる我が子の名前や、 起業する際に考える社名や店名や、等々は元よりですが、
そこまで重要でないにしても、我々人間が人生の中で、 何かちょっとした名前を付けなければならないことに 迫られる場面には、度々出くわすわけであります。
その際に「しっくりくる良いネーミングを考える・・・」
という行為には、それなりの時間も掛かりますし、脳みそ もそれなりに使わなければならないわけですね。
でないと、そう易々とは、しっくりくる「良いネーミング」 なんてものは、早々には中々思い浮かぶものではないわけです。
でそれは、
変数名やマクロ名(プロシージャー名)もまたしかりです。
ちまたの生半可なVBA先生には実に多い 「いい変数名を付けなさい!」だなんて言うセリフでの その理屈はプロからすると、ちゃんちゃら可笑しいです。
しっくりくる良い変数名を考えるのには、それなりに、 数秒や数十秒、時として数分、数十分の時間を要すること になるわけです。
とにかく、
マクロのプログラミングの最中に「ここで変数を使おう!」
そう考えた瞬間といいますのは、まず間違いなく、脳みそが 一番活発に働いている時であるわけです。
自分の「プログラミング脳」が一番波に乗ってきている その瞬間であるに、間違いはありません。
これは、普段の仕事中で考えるとわかりやすい思いますが、
仕事に集中して作業が効率よく進んでるという最中にもし、 いらぬ電話がかかってきたり、上司に話しかけられたりで 突如、せっかくのその集中が途切れてしまった・・・(泣) なんていうことは、誰でも経験あるかと思いますが、
それは、非常に誰でも嫌うイヤなことでありますので、 作業効率の面を考えると、時として、大きな痛手にも なり兼ねません。
まぁ、電話や上司というのは他人事で起きることですから それはまぁ仕方ないにしろ、
せっかく、プログラミングが調子に乗ってきていて、 自分の脳みそが集中して一番活発に働いているであろう 「ここで変数を使おう!」と思いついたその瞬間に、
あろう事か、自らその瞬間に別の事を考えて(変数名を 考え出すようなことをして)、その集中力を中断させて しまうような人が、けっこう多く居るわけです。
プログラミングの効率を妨げる最大の敵というのが、 まさしく、この「ここで変数を使おう!」の瞬間に 「変数名を考える・・」という行為に他ならないのです。
私から言わせると、 それは、まったくもって「もったいない!」の極みです。
だから、プログラミングに集中できている最中には、 絶対に、他の余計なことは、一切考えてはなりません! それが、プログラマーの鉄則事です。
プロのプログラマーの場合には、開発プロジェクトで 命名規約というものが予め決められていますので、 プログラミングの最中に変数名考える為に思考を止める といった非効率なプログラミングは、していません!
途切れても何らさほど影響のないただのExcelの操作中 というのとは違って、マクロ作り(プログラミング)の 最中と言いますのは、とにかく頭がフル回転の”思考中” となっているわけなんですから、
その頭の中の思考は、絶対に途中で中断させないこと、 それこそが、プログラミングでは最も重要である事に 間違いはないです。
話はちょっと変わりますが、
つい昨日も私、何かふと気になったワードがありまして、 ネットでYahoo!検索をしよう思いブラウザを立ち上げた わけなんですが、
そのブラウザが立ち上がって来るほんの僅か数秒の間に、 目にしたYahoo!ニュースに1秒気を取られてしまったが 為に、「あれ?」ってなったしまったわけです。何を 検索しようとしたのか忘れてしまったのです。(>_<)
24時間以上経った今だに、それ思い出せずに、ずっと もやもやしています。(笑)
家の中でも、何か取りに行こうと2階へ上がる階段で、 一瞬何か考え事してしまったら、結局、何を取りに 来たんだか忘れてそのまま1階に戻った・・・なんて 経験は、ありませんか?(幸い、私の家には2階がない ですので、私この経験はないのですが。。笑)
話しを戻しますが、ですから、
一瞬でもプログラミングの最中に他の余計な事を考えては いけない。余計な事に気をそらされない様なつくり方いう のを心がけていかないといけないわけです。
それが、当講座で変数名に a を使う第一の理由であります。
何も考えずに、出てきた順に、aやbやcや・・と順に付ける。 この方法であれば、ほんと何も考える必要がなくなるわけ ですので、集中が途切れません。
又それは、私が普段から絶対やっちゃダメだ!と繰り返し 言っている「変数名をいちいち強制的に定義する」という 無駄な行為でも、またしかりです。
「この変数の型はどうだのこうだの、よくわからんから 型の部分は書かなくてもいいや-だの、定義書く位置が 上の方だとか、etc、」と、
色々考えるのと書く時間とが掛かって、せっかくの集中が その無駄な数秒か十数秒の要する時間の為に、一旦途切れ てしまうことになるわけです。
それが、「ここで変数を使おう!」の度に、毎回毎回その 無駄時間を費やして、その度に、毎回毎回一番活発に働いて いたプログラミング脳の中断を余儀なくされてしまう。
だから、間違っても「変数の宣言を強制する」のオプション にチェックを入れたら、絶対にいけませんよ!
外野の声には惑わされること無く、正しくデフォルトの OFF設定のままで、マクロは組んでくださいね。 (設定の方法は こちら )
なお、そもそも未だ「変数って何?」の段階の人は、 こちら をご覧ください。
あと、マクロ名にしましても当講座の場合には、いつも
Macro1、Macro2、Macro3、・・・
ですね。これは、
「マクロの記録」ボタンを押した時の画面に表示される デフォルト名で、何も考えずにただOK押して操作の 記録がすぐに開始できるようにしているわけです。
これも、その時思いついたことを「マクロの記録をする」 という作業だけに集中してできるように、との考え方で、 それを推奨して教えています。
「何かこんなマクロを作ってみよう、」とか 「わからない構文の書き方調べよう、」とか思って、
「マクロの記録」を開始した瞬間というのは、これも あなたの頭の中で一番いいアイデアが浮かんだ瞬間である に間違いはない思います。
そこで「マクロの記録」の開始ボタンを押したその瞬間に、
「このマクロ名は何がいいかなぁ~?」だなんて、
そんな余計なことをもし考え出してしまったら、 そのせっかく頭に浮かんだ思考中のアイデアが、それで 一時中断を余儀なくされてしまうことになるわけです。
何度も言いますが、 それは何とも、非常にもったいない極み、です。
しかも、
その中断は電話や上司といった他人からもたらされるもの ではなく、自分、自らの意思でもたらした中断(時間的な 損失)、考える作業であるプログラミングでは最も重要な 集中力の一時停止を自らでやってしまうということになる わけです。
だから、もし、
それらに適したわかりやすいネーミングが必要とあらば、 マクロが完成した後に、あとでゆっくり考えて、VBE の(プログラムの)画面で文字列の置換をして、名前 付け替えすれば済むだけの話です。
以上、効率よいプログラミングの方法(正しいマクロの 組み方)いうものを、この講座のやり方でしっかりと 身に付けていってくださいネ。
今日の話のまとめになりますが、
自分のプログラミング脳が一番活発に働いている最中に、 余計な事を(変数名やマクロ名を)一瞬たりとも考えたら、 絶対にダメですよ!
プログラミングの最中は、思考の中断は厳禁です!
マクロ作成中は、プログラムだけに集中するべし!
今日の話、おわかりいただけましたでしょうか? これは重要ですよ!