バグを防ぐためにプログラマが出来ること
バグの根絶って、本当に難しいと思います。それに対して、我々プログラマは「とにかくシンプルに実装する」ことを心掛けていくしかないのではないでしょうか。他人の書いた多くのコードを読んで「分かりやすいな」と思ったものをマネしていくことで、シンプルに書く力は高まると思います。
今日見かけた面白いバグとか
Windowsのメモ帳で文字化けをする場合があるという話。
Sorting It All Out : Behind 'How to break Windows Notepad'
メモ帳がファイルを読み込む時、ANSIのはずがUnicodeと判定してしまっているようですね。
なんとなく心配になって、さっそく拙作TinyPadでもThis app may breakをやってみました。結果は大丈夫!まあTinyPadの場合Unicode判定に手抜きロジック(笑)を採用しているので、大丈夫とは思いましたが。
あと、面白いなと思ったのが以下のバグ。
これ、ユーザが見つけたんでしょうかね。もしそうなら、すごく優秀なデバッガーだ!(笑)
バグの根絶って、本当に難しいんだな、って思います。ですが、それ以上に大切なのは、その後の対応にあるのではないでしょうか。
たとえそれがあまり使われないやり方で、1000人に一人ぐらいしか遭遇しない問題であったとしても、ユーザ数が多いデバイスであれば、その問題による影響は図り知れません。仮にこれらがテストで見つかったとして「こんな使い方されないでしょ」と流されていたとすれば、別の問題が発生しないとも限らない。
プログラマが出来ること
我々プログラマはとにかくシンプルに実装することを心掛けていくしかないのではないでしょうか。
プログラムを複雑にしている要因の多くはその複雑な構造にあります。最初は美しくシンプルであっても、度重なる機能アップやバグ修正により、コードはどんどん複雑になっていきます。そして、それは思わぬバグの温床となることも少なくありません。
シンプルなコードとは実装を難しく考えないということです。100人にアンケートを取ったら一番多くの人が採用しそうな、そんなロジックを選ぶ。実際にアンケートを取るのは無理なので、これについては他人の書いた多くのコードを読んで「分かりやすいな」と思ったものをマネしていくしかないと思います。本やネットでも学ぶことは出来るかもしれませんが、出来れば実際に動作しているコードを見るのが一番かな。
ユーザの要求を満たしつつシンプルな構造のプログラムを作ることは相反する上、現実にはなかなか難しいことです。私はなかなかシンプルには書けないのですが、なるべく分かりやすくシンプルに、ということは常に心掛けていきたいです。