妖怪てぬき
お隣さんが作ったプログラムを眺めていたら、
控えめに見ても回りくどい処理があったので、
ちょっとつついてみた。
ら、曰く、結果は同じじゃないか、と。
確かにその通りだけど、さ、
ここをあーしてこーした場合比べると、
プログラムのルートが8分の1になるやろ?
これって逆に言うと、
テストの項目が8倍になるんだけど、判る?
複雑な表情。
だって、よぉ、あんた、
仕事は楽なほうが良いだろ?
ミ★
こちらは顔も視線もそのままだったが、
対面の年配社員がこちらを気にし始めたのが判る。
きっと嫌そうな顔をしているに違いない。
楽をするという言葉に引っ掛かって。
お隣さんの表情は変わらない。
同じことをするなら楽なほうが良いやんか、
言い方変えるなら、さ、効率を上げるってことさね。
ふーん、てな表情に変わる。
ミ☆
中年男はまだ聞き耳を立てているようだ。
さっきまでせわしなく動いていたので良くわかる。
語弊があるのは承知しているので、
最後に一言付け加えることを忘れない。
言っとくけど、さ、勘違いするんじゃないよ。
楽をしろってのは手を抜けってことじゃないからね。
なにやら考え始めたので、自分の仕事に戻る。
ミ★
時と場合にもよらないことはないが、
手抜き仕事をするヤツは大嫌いだ。
先日、バグがあった。
ありがちな凡ミス。
仕様も中身もそれなりに知っていたプログラム。
テスト込みで10分もあれば十分だろうけれど、
まぁ、とりあえず30分てとこかな?
などと見積もりつつ、
担当者に障害連絡表 ―― バグの内容を記した紙を渡す。
一通り読み終えたあたりを見計らって声をかける。
すぐに直るやろ?
どこか曖昧なうなずき方。
ぱぱっとやっちまってちょーだいな。
喋りつつ、自分の席に戻る。
ミ☆
2時間後。
反応がないので様子を見に行く。
と、出来た、と言う。
んじゃ、ソースちょうだい。
エクスプローラを操作するマウスカーソルを眺め、
指定したフォルダにコピーされたのを確認し、
ごくろーさん、などと言ってさっさとその場を離れる。
小言を言っているほど暇ではない。
ミ★
気になったので、とりあえずソースを開く。
念のためDOS窓で fc.exe でコンペアしてみる。
変更はその1ヵ所のみ。
場所は予想通り。
タイムスタンプを確認。
修正に要した時間は、ふむ、10分か。
この数字は、妥当。
コンパイルしてみる。
と、コンパイルエラー。
よく見ると、変数の綴りが間違っている。
ミ☆
言語は Visual Basic 5.0 。
標準のエディタは小細工の限りが尽くされたもので、
痒い所に手が届く、なかなかに便利なものである。
ま、たまに痛い所や関係ない所も引っ掻いてくれるが。
変数は大文字小文字を区別する。
で、便利なことに、宣言済みの変数なら、
全部小文字で打ち込んでも勝手に宣言通りに修正してくれる。
例えば、
Dim iDemBreakCount As Integer
などと宣言しておいて、
iDEMbreakcount = cint("そんなの数え切れません")
と書くと、自動的に
iDemBreakCount = CInt("そんなの数え切れません")
と書き直してくれる。
大文字小文字を混在させておけば、
それなりに打ち間違え予防になるので便利である。
因みに、上の例は実行時にエラーになるので、
よい子の皆様はこんなコーディングはしないよーに。
# 要求( Demand )が破棄された回数という意味……ではない :-b
ミ★
例に漏れず大文字小文字混じりの変数。
上に書いたようなことを気にしていれば、
スペルミスなら書き直した直後に見つけることができる。
少々神経質に思われるかもしれないが、
総合試験という、何段階かあるテストの最終段階なので、
こーゆー修正は慎重にやってもらわなければならない。
もっとも、ここで見逃したとしても、
コンパイルすれば絶対に引っ掛かる。
ところで VisualBasic では変数を宣言せずに使うことができる。
それらしいモノを見つけると、
コンパイラが自動的に変数と解釈してくれるのだ。
場合によっては便利かもしれないが、
デメリットが多すぎ、しかもそれは致命的でもある。
バグ探しで徹夜したくなければ、
変数宣言を必須とするオプションを指定しよう。
ミ☆
で、そのコンパイルでエラーが出るのである。
まっとうに考えれば、ソースの修正をしただけで、
テストはおろかコンパイルすらしていない事になる。
さすがにムッと来た。
その旨を伝えると、
嫌そうな顔をしてソースを開き、コンパイル。
当然だが、こちらでもエラーが出る。
静寂。
修正にどのくらいかかる?
問うと、エラーを示す赤い文字を見つめたまま沈黙。
もう1度だけチャンスをあげる。
どのくらい時間がいる?
反応がない。
聞こえているのは間違いないので、切り捨てることにした。
10分。10分後だから、あの時計で16時25分。
それまでに修正してコピーしておいて。
良いね? 分かった?
それでも一言も発しなかったが、
わずかに頷いたのを見、背を向ける。
ミ★
勘違いされと困るので断っておこう。
上のバグは全くの実話であるが、人物テストも兼ねている。
意図的にアバウトにしたのだ。
また、これも勘違いされると困るのだが、
彼の教育を担当したのは私ではない。
そして、こーゆーことが出来るのも、
単純でお手軽なバグだからこそ、だ。
結果はもちろん見事な落第。
子供じゃないんだから、さぁ。