ぶっちゃけ、関数の返す結果値のチェックなんてしないモンですか?
オレはしている、私はしない、こーゆーケースではするけどこーゆー時はしない。いろいろな考えがあると思います。それぞれ理由をつけて答えてください。
他のエントリでも書きましたが、「プログラマとしての気概」と後で苦労したくないという実利が原動力ですね。実利がチェックを実装するという行為に結びつくには、当事者であるという認識がないといけない。作っている人の立場や気持ちが、仕様やコードにあらわれてくる。コードを延々と見ていますが、やっぱりその人がそのコードを書いている時の気持ちみたいなものは、感じられるような気がしますね。気のせいかもしれませんがw
自前でエラーハンドル用(エラーだけでなくチェックポイントのログ出力、呼び出し履歴の記録なども)クラスを用意しておくと、使いまわしができて楽ですよ。
ここはね、お手本を用意して「こうやってやればラクですからマネしてください。」といってお願いすれば、みんながやってくれるようになる。と甘い期待をしています。個人でスキルある人は、自前の便利コードの断片をいっぱいもっているし、それがその人のスキルだと思う。なので、そーゆー努力をしない人にまでため込んできたナレッジを開示するのは、抵抗があるかもしれない。でもソレをしないと組織としてスキルアップにつながらない… すいません、このへんは私の自問自答です。
でも、気概も持たず、工夫もしない人にやってもらうようにするにはどうしたらいいのか? というのは、ナレッジ開示よりも難しい問題かもしれません。
メモリアクセス違反(ポインタの戻り値がNULL)でオチるのは恥ずかしいし
他の処理(関数)でも、どこが発生原因かわからないのは、不具合調査で自分の労力が増すばかり。
PGの誤りだけではなくて、動作環境や渡される引数、入力ファイルが原因の場合にも処理異常の理由を追えますから。(むしろ、リリース後は、この用途のほうが多いかも)
どの関数(必要なら呼び出し時引数の値も)で、どういった想定外あるいはエラー応答があったか、必要に応じてログにも吐き出すようにしています。
自前でエラーハンドル用(エラーだけでなくチェックポイントのログ出力、呼び出し履歴の記録なども)クラスを用意しておくと、使いまわしができて楽ですよ。
ただ、エラー処理クラスのエラーをこのクラス自身でハンドルすると無限ループ(ひいてはスタック領域枯渇)につながるのでそこだけ注意です。