プログラマーあるあるネタ(#2)
こんばんは、ITアドバイザー@瀬川です。
今夜も、【プログラマーあるあるネタ】を書いてみたいと思います。
今回はこれ、
「インデックスが有効範囲にありません。」
です(^^;;
これもVBやVBAなどを経験されたことがあるかたなら、よく見かけるエラーだと思います。
このエラーは、
「器に入る容量を超えて、値を入れようとしてますよ~」
というエラー内容と言えば伝わるでしょうか??
このエラーも、前回の、「オブジェクト参照がオブジェクトインスタンスに設定されていません」
と同様に、
”このエラーだけでは詳細なエラー内容がわからない”
と言う点がやっかいなところです。
よくやるケースとしては、
配列(値を名前をつけて順番に並べることができる箱のようなもの)の上限を超えて値を入れようとして起こるエラーが多いです。
例えば、配列の上限は5個で、1番目にバナナ、2番目にりんごと言うように順番にセットしていって、6番目にイチゴを入れようとして、6番目に入れる場所がないよ!
って怒られるエラーが、「インデックスが有効範囲にありません。」になります。
もっとわかりやすいエラーメッセージだったら良いのですけどね・・・
先日たまたま依頼していた社内向けのExcelのツールで、これはVBAで書かれているのですが、実行ボタンを押した瞬間にこのエラーが発生しました。
原因は、Excelのとある特定のシートをコピーして新たに新しいシートを追加すると言う処理なのですが、
そのコピー元のシートを消してしまってた為にこの、「インデックスが有効範囲にありません。」が出てしまいました。
こんな感じで、シートの数が違ってセットしたりした場合もこのエラーメッセージが出ます。
原因が分かれば実際には大したことのないケアレスミスなのですが、エラー内容が如何せん曖昧なので原因を突き止めるのに時間がかかる場合もあります。
身内だったので即、「テストしてへんかったやろ!!」って突っ込みいれて笑い話になりましたが、これがお客様の納品物だったとしたら大変な事態になります。
プログラミングをやると必ずケアレスミスは発生します。これはどんなにベテランの方であってもです。
なぜなら人間がすることなのでミスは付き物なのです。
だからこそ、単体テスト、結合テスト、システムテストと言った感じでテスト作業が大切になってくるんですね。
もしこのテスト工程でバグが全然発生しなかったとしたら、逆にそのシステムの質は悪い可能性が高いです。
逆に、バグが100個くらい出てそれをすべて解消しましたと言うシステムの方が、きっちり細部までテストを行ってミスがないのを確認してくれたという意味でシステムの信頼度が高いです。
これからプログラマーを目指される方はプログラミング技術を学ぶことはもちろん大事ですが、しっかりテストを行ってバグを潰していく作業も大事なんだなということを覚えておいてくださいね。
いかかでしたでしょうか?
こうして書いてみるとあんな事も当時あったなぁって懐かしさも感じております(笑)
今後も思いついたときに”あるあるネタ”を書いていきたいと思います!