93-エラーを無視するな

プログラマが知るべき97のこと」の93個目のエピソードは、エラーとエラーハンドリングに関する話です。完璧なシステムを作ることはできません。時にはプログラム上の問題ではなく外的要因でも発生する可能性があるエラーは厄介なものです。しかし、エラーはソフトウェアになんらかの問題が発生している可能性があることを通知してくれるものです。時には無視できるような通知もあるかもしれませんが、大きな障害が発生する前触れであったり、無視できるようなエラーが積み重なって無視できないエラーになったりすることもあるため、楽観視するのは危険です。

エラーが起きているのに、大したことはないと思い込もうとする。大丈夫だと自分に言い聞かせて無視する。そんなことをしても何も良くないのです。

エラーを無視する事は悪い事であると解っていても、多忙や疲労などを言い訳にしてしまう事があります。最終的にはやらなければならない事なのに、本来は重要度が高いものであるのに、異常系は正常系よりも優先度が低いという思い込みからこのような判断をしてしまうのです。また、顧客に正常系の通るアルファ版をリリースすることによりフィードバックを得たいと考え、エラーハンドリングを後回しにすることもあるでしょう。しかし、最終的にはエラーハンドリングを実装する必要があります。単に問題を先送りにしているだけであり、重要度が低い訳ではないということを強く自覚するべきです。
エラーハンドリングはプログラミングをする中で最も厄介な事の1つです。ソフトウェアやプログラミング言語の性質にもよりますが、ソースコードの中で異常系に関する部分の割合は正常系と準正常系に比べて、無視できないほど多くなります。そんな中で納期のプレッシャーや早くアプリケーションを動かしたいといった要因が重なると、エラーハンドリングをなんとかサボりたくなってしまいます。そして、最も難しい事はエラー処理に関する見積もりです。実装をしていく中で、次から次へと新しいエラー処理が必要とプログラマは気付き、予定の工数を大幅にオーバーしてしまうのです。
エラーハンドリングに関しては、テスト手法も視野に入れた訓練が必要です。エラーハンドリングを考慮するという事は、「発生しうるエラーとその処理について、それがどんな条件で行われ、どうなることが期待されるか」という点を考慮するという事です。これはまさにテストの基本です。
エラー処理に関して正確に見積もるスキルを手に入れるため、それらを正しく実装するため、そしてそれを検証するため、我々はテストについてもっと学ぶ事が必要です。

プログラマが知るべき97のこと

プログラマが知るべき97のこと