TOPLOGO

文字列で含まれるを使ってプログラムを書くとハマる可能性がある

2018-11-15 20:55:30

プログラミング

no_image
要約:たまには、プログラミングについての話でも。

はじめに

最近ゲームを作っている。その中で久しぶりにハマったのでそのメモ。

◯◯が含まれていたら〜

プログラムにありがちな処理で一定の文字列の中にキーワードが含まれていたらtrueというプログラムを書くことがある。

これを適当にしていると思わぬハマりポイントになるのだ。

アイテムを1〜20個つくっているとき

適当にアイテムの画像に名前をつけた。item_1、item_2・・・。そんな感じで20個ほど作るとどうなるのか?

item_1とitem_10は「item_1」で2つとも含まれる文字が同じため処理を通過する。

当然だが、item_1とitem_11も「item_1」が共通だからif文を通過する。

エラーがないバグほど怖いものはない

エラーがでてくれたら直しようもあるが、今回はエラーがなかった。テストプレイをしていたら、おかしいなあということに気付いた。

しかもだ、item_1とitem_2は普通に遊べている。つまり、特定のときだけおかしな挙動をするからなんとか気付けた。

いや、気付けたのは数時間経ってからだ、あーでもないこーでもないとプログラムをいじっていた。どツボにはまるパターンだ。エラーはでていない。処理の中でデータを出力して中身をみても問題はない。ただときどきおかしなことになる。不思議だ。俺のミスではないのか?と思ったがそんなわけはない。結局のところおかしな箇所をすべて読んでいくことにした。でも分からない。盲点というやつだ。結局「含まれる」という処理があるところがポイントだった。わかれば大したことがない。ただこれで数日ハマってしまう人もいるだろうとは思うし、リリースまで気づかずに公開してからユーザーに指摘されるパターンも多いだろう。

まとめ

危ないところだった。

 リンク