2009-03-30 5 views
2

私は一連のPHP関数をコンテナクラスに書き直しています。これらの関数の多くは少しの処理しか行いませんが、結局はコンテンツをSTDOUTにエコーします。出力だけの関数は何かを返す必要がありますか?

私の質問です:私はこれらの関数内で戻り値を持っていますか?これに関しては "ベストプラクティス"はありますか?

+0

おそらく、あなたは[http://en.wikipedia.org/wiki/Command-query_separation](http://en.wikipedia.org/wiki/Command-query_separation) –

答えて

4

エラーを主に例外によって報告するシステムでは、自然なものがない場合は戻り値を返しません。

戻り値を使用してエラーを示すシステムでは、すべての関数がエラーコードを返すようにすると便利です。このようにして、ユーザーは単純にすべての関数がエラーコードを返すと仮定して、どこにでも続くことを確認するパターンを作成します。関数が今でも失敗することは決してない場合でも、成功コードを返します。そうすれば、将来の変更によってエラーが発生する可能性がある場合、ユーザーは暗黙のうちに暗黙に無視するのではなく、システムが奇妙に動作している理由を本当に混乱させることなく、エラーをチェックしています。

2

返す値がない場合は値を返しません。何らかの価値がある場合は、発信者に伝える必要がありますが、それを返しますが、この場合はケースのようには聞こえません。

0

あなたがすべきちょうど:私の意見では

return; 
0

SRP(単一責任の原則)とするだけでなく、オブジェクトのために、同様の方法/機能のために適用されます。 1つの方法は、データを出力する場合、データ処理を行うべきではないものを処理する必要があります。処理しない場合、データを返すべきではありません。

4

処理が失敗しますか?もしそうなら、発信者はそれについて知っていなければなりませんか?いずれかがノーであれば、私はリターンで価値を見ません。しかし、処理が失敗し、それが呼び出し側に影響を与える可能性がある場合は、ステータスまたはエラーコードを返すことをお勧めします。

+0

読みくださいそれとも、例外を –

+0

だけ上げることができますそれが例外的な条件ならば。処理の失敗が比較的正常であれば、いいえ、しないでください。私は、EOFが予期された条件なので、ファイルを読むときにEOF例外がかなり奇妙であると考える人の一人です。 –

1

私はしばしば "return:true;"これらの場合は、関数が機能していることを確認する方法を提供するためです。しかし、ベストプラクティスについてはわからない。

1

C/C++では、出力関数(printf()を含む)は書き込まれたバイト数を返します。失敗した場合は-1を返します。なぜこれがこのように行われたのかを見るためにこれをさらに調査する価値があるかもしれません。私はは誰がこの値を収集見たことがないまし

  • 私は(あなたが積極的に自分のSTDOUTストリームを閉じない限り)標準出力への書き込みが事実上失敗する可能性があることはよく分からない

    1. ことを告白し、おろかで何かをそれ。

    これは、ファイルストリームへの書き込みとは異なります。これは、シェルでストリームリダイレクトがカウントされていないことに注意してください。

  • 1

    "正しい"ことをするには、メソッドのポイントがデータを印刷するだけであれば、何も返されません。

    実際には、印刷したばかりのテキストを返すような機能を持たせると便利なことがあります(電子メールでエラーメッセージを送信したり、他の機能にフィードしたいことがあります)。

    最後に、選択はあなたのものです。私はそれが、あなたがそのようなことについて「純粋主義者」のどれくらいであるかにかかっていると言います。

    0

    何かを返す必要はなく、実際にはreturn文を返す必要はありません。事実上void関数であり、戻り値がないことは十分理解できる。 「リターン」を入れる唯一があります。返品陳述は雑貨のために騒音です。

    関連する問題