2017-01-31 5 views
0

私は文字列内の文字列の位置を見つけるためのメソッドを実装し直しています。だから、私は整数の位置か、-1のような "マジックナンバー"のどちらかを取得します。私は多くのプログラミング言語の中でこのパターンを参照しています。たとえば、nullのような値を返すものと、いくつかのランダムな「範囲外の」値を返すものがあります。何かが失敗した場合、「マジックナンバー」を返すのではなく、何を返すのですか?

この上の「ベストプラクティス」または私は認識していないよ、他のプログラミング言語でのビットより明確だ少なくとも何かはありますか?

答えて

0

これは、あなたがするそれを作るとして、それは非常に多くの言語や機能の正確な目的に依存依存しない言語としてではありません。かなりの3つの異なるアプローチがあります。

  • は、エラーが

  • リターン「の範囲外」の値を発生したかどうかを示しどこかにフラグを設定し、例外
  • を投げる:

    • 一部の言語では、例外のいずれかの概念を持っていない、または「エラーが」本当に「例外」ではありません。
    • エラーフラグを設定することは、問題の言語には理想的な場合とそうでない場合があります。 Goは結果を返すことによってこのアプローチを使用し、エラーインジケータはイディオムのデフォルトを示します。 Javascriptは、部分的に慣用的に、function (result, err)のようなコールバックを受け入れるようにしました。他の言語では、このアプローチはまったく適切ではないかもしれません。
    • 「範囲外」の値は、動的型付け言語のための典型的なものであるが、静的型付けの言語の問題となる可能性があります。

    問題の言語に最も適していて、特定の機能を個別に決定する必要があります。目標は意味を作るの間秤量する必要があります(「見つからない文字列は」おそらくない例外である)、そしてそれが簡単にシンプルかつ正確なコードを書くために作ります。

  • +0

    コードをよりきれいにしたい場合、範囲外の値に問題はありませんか? Node.jsのようなフラグを使うと、少なくとも2種類の結果を明示的に区別することができますが、 '範囲外の値'を返すだけですべてがまとめられます。 – anemaria20

    +0

    もちろん、それはあなたが考慮する必要がある*問題です。言語にもよりますが、それらを一緒にまとめるのが実際には便利です。例えばPHPはしばしば(古典的な例 'strpos(...)=== false')を必要とする場合やより細かく区別できる場合に、等しく扱うことができる' false'または* false値*を返します。これは、有効な戻り値がエラー値と幾分区別できない場合には、非常に問題になります。そのため、新しい言語では、例外/別のエラーフラグが使用されます。 – deceze

    関連する問題