0

検索クエリの曲のキーを設定する機能があります。c..borから0..11移動し、指定された「キー」が許可された範囲外にある場合は、 に戻りますNULL。提供された $key が許容範囲外であることを警告する代わりに、例外をスローする必要がありますか?

コードは次のとおりです。

<?php
function between($x, $y, $z) {
    return (($x <= $y) && ($y <= $z));
}

function setKey($key) {
    if (is_string($key)) {
        $key = array_search(strtolower($key), array("c", "c-sharp", "d", "e-flat", "e", "f", "f-sharp", "g", "a-flat", "a", "b-flat", "b"));
    } else {
        $key = (!between(0, $key, 11)) ? false : $key;
    }
    return (!$key) ? null : $key;
}

var_dump(setKey("g"))."\n";
var_dump(setKey("r"))."\n";
var_dump(setKey(2))."\n";
var_dump(setKey(12))."\n";

出力:

int(7)
NULL
int(2)
NULL
4

2 に答える 2

1

ここには 2 つの別個の懸念事項があります。

1 つ目は、入力が許容範囲内にあることを検証し、ユーザーが範囲外の値を入力した場合にユーザーにフィードバックを提供することです。この検証は必ず実行する必要があります。可能であれば、ユーザーが入力を開始する前にこれらの値を明確にするか、エラーの可能性を排除する方法で選択を提示します。

2 番目の問題は、例外をスローする必要があるかどうかです。理想的には、現在の状態でプログラムを実行できない場合、または続行するとデータが破損する可能性がある場合にのみ、この方法で例外を発生させる必要があります。あなたは単に読み取りを実行しているだけなので、これはあなたのシナリオには当てはまらないと思います。

特定のシナリオでは、検証を使用しますが、例外は使用しません。微妙に異なるシナリオを持つ人々が質問に出くわしたときに情報に基づいた決定を下せるように、追加の詳細を含めました.

于 2012-10-18T01:18:23.547 に答える
0

はい、入力が範囲外であることをユーザーに知らせることは常に良い考えです。ユーザーが喜んで知り、修正するのは、ほとんどの場合タイプミスです。

于 2012-10-18T00:49:49.463 に答える