2009-07-09 4 views
2

から何かを返すときのベストプラクティスは何ですか?常にステータスビットを返すべきか、失敗した場合にのみ返すべきですか?例:ベストプラクティスは、日常

失敗した場合、返信(0、 "失敗したため... ...")
成功した場合に(1、success_value、second_success_value)を返します。

それとも

リターン(0、「...ので、失敗しました。」)、失敗した場合に、
リターン(success_value、second_success_value)は成功しました。

I Perlで通常のプログラムが、私は質問は私がでプログラムしようとするかもしれないどんな言語の略ですね。ありがとう!それらをサポートする言語で

答えて

3

答えは依存非常に言語です気にしません。使用している言語のイディオムに従ってください。あなたが言及したPerlのイディオムは、成功のためにゼロ(0)を返し、失敗のために他の値を返すことです。あなたの例のように複数の値を返す必要がある場合、そのうちの1つは常に成功/失敗のコードになります。

例外をサポートする言語(Java、C#、C++など)を使用している場合は、例外を使用して例外条件(例:失敗)を示す必要があります。ルーチンが正常に完了した場合(例外がない場合)、成功したとみなすことができ、返された値は安全に使用できます。

+0

あなたが大成功として0を返すために、Perlのイディオムを得たところ@daveは私が求めることができます。過去にPerlコードを見たように見えるので、成功のために1を返します。私はそれを知っているときにベストプラクティスを使用しようとするのが好きで、あなたの提案が真実なら習慣を変えるでしょう。 – Akers

+0

私はこれが私のDNAに埋め込まれていると思います:)私は参考文献を考えるのは難しいですが、私はそれがPerlのUnix遺産を反映していると確信しています。私はグーグルを提案できますか? 成功の形と失敗の形が1つしかないという考えもあります。だから、成功のために0を選び、すべての可能性のある失敗に対して非ゼロを選ぶのが理にかなっています。 – dave

+0

Perl Cookbookによると、失敗した場合はundef/emptyリストを返して、返さなければならないと言います。引数なしでそれを行う必要があります。 http://raca.teroristi.org/books/perl/OReilly_books/cookbook/ch10_11.htm –

1

、あなたは説明の例外をスローする必要があります。

該当する場合、あなたは正しい型の例外をスローする必要があります(例えば、ArgumentNullExceptionまたは.NETでInvalidOperationException

0

ちょっとエイカーズ、私は自分自身、過去に同様の質問を...求めてきました

これらの答えのいくつかは、私が来て、基本的な結論は、発信者がそれを必要とする場合にのみ何か、何を、返すことですあなた

Is it bad practice to return Exceptions from your methods

に役立つかもしれません。

ので、ほとんどの部分は、私はちょうど私の方法は、ボイド作るためにそのより良い見つけて、何かがうまくいかない場合は、それは意味のある例外をスローしています。すべてがOKになった場合、私は、呼び出し側として、本当に

関連する問題