ソフトウェア開発の仕事に携わっています。「開発途上のプログラムの品質が心配なので検査して欲しい」という依頼を受けて10K行ばかりチェックしたところ、関数の返す結果値(正常に処理を完了できたか、何らかのエラーが発生したかを整数型の値で返す関数です)を9割がた未チェックのまま正常処理を続行していることが判明しました。


ぶっちゃけ、関数の返す結果値のチェックなんてしないモンですか?

オレはしている、私はしない、こーゆーケースではするけどこーゆー時はしない。いろいろな考えがあると思います。それぞれ理由をつけて答えてください。

回答の条件
  • 1人5回まで
  • 200 ptで終了
  • 登録:
  • 終了:2009/03/13 23:55:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答20件)

<前のツリー | すべて | 次のツリー>
エラーを無視していいかどうか?は致命度によるのでは? chakoku2009/03/07 00:33:16ポイント2pt

エラー値をあつかうべきかどうか?はプログラムの重要性や

エラーの致命度によると思います。

プログラム自体が内部メンバだけが使うテストプログラムであれば

エラーをほっておいてもいいかもしれないし、また逆に、一般ユーザが

使うのであれば、きっちり何が起きているのか教えてあげる必要があると

思います。また、そのエラーが発生して、それ以降の処理を継続しては

いけない(例えば過去のデータを空白で上書きして消す結果になる)場合は

ちゃんと中断処理をする必要があると思います。さらに例えると、

オーダ処理でエラーになったら、課金処理をロールバックさせるとか、、

逆に、軽微なエラーであって、一度発生してもまたリトライするタイミングが

あって、その時にうまくいけばいいのであればほっといてもいいし。。

一般的に、エラー処理はまじめにやりだすと、コードが肥大化して読みにくく

なるし、さらに、サブルーチンの深い所でエラーが発生すると、大域ジャンプに

近いようなことをしないと処理を中断できないとか、とにかく頭を悩ませる

問題とは思います。(品質向上のためには必要なコードではありますが)

今風に実装するなら、例外(Exception)を投げる実装がすっきいりまとまって

いいのではないか?と思います。

至極もっともな考えだと思います Rinta2009/03/07 01:01:39

なるほど。至極もっともな考えだと思います。ただ、一般論の域を出ていないもどかしさも感じます。こちらの質問もひじょーに抽象的な書き方をしているので、どうしても突っ込んだ意見になりにくいのは、仕方がないですかね。

私の個人的な考え、やり方ですが、関数が意味のある値を返すなら全てチェックするコードを書きます。でないと次に何が起こるか予測がつかないと思うので。あとは運用中に不具合が発生したとき、エラートラップをカッチリやってログなりなんなり残さないと後で原因分析できなくなるのが恐ろしいです。

具体事例は? chakoku2009/03/07 08:41:21ポイント1pt

>一般論の域を出ていないもどかしさも感じます

そうですね。すみません。(会社でも突っ込みが甘いと言われたり、、)

もう少しフォローのリプライ書きます。

大昔、すこしまともなソフトを組んだ頃は、

チーム全体で、エラーハンドリングのルールも決めて

統一的に処理していました。(開発者が都度判断していると

異常時の動作が開発者間で不統一になるし、マニュアルに

エラーコードを掲載する必要があるので)

<前のツリー | すべて | 次のツリー>

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • 質問してみた まあ、せっかくはてなのポイントがあるんだし、いろんな人の話をきいてみようーということで質問を出してみました。 ソフトウェア開発の仕事に携わっています。「開発途
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません