3

ユーザー入力を検証する正しい方法は何ですか (もしあれば...)

これ(最初に例外をスロー):

private void DisposeWorkFlowItem(WorkFlowItem item)
{
    if (item == null)
    {
        throw new ArgumentException("work flow item must have value");
    }
    //TO DO: add a call to delete the task from worker service.
    _workFlowItems.Remove(item);
    _workFlowItemsStore.Delete(item);
}

またはこれ(最初にアクションを実行):

private void DisposeWorkFlowItem(WorkFlowItem item)
{
    if (item != null)
    {
        //TO DO: add a call to delete the task from worker service.
        _workFlowItems.Remove(item);
        _workFlowItemsStore.Delete(item);
    }
    else
    {
        throw new ArgumentException("work flow item must have value");
    }
}

ガイドラインはありますか?

4

3 に答える 3

6

else実際のガイドラインやルールはありませんが、1 レベルのインデントを削除して を削除できるため、多くの場合、最初のルールが好まれます。

private void DisposeWorkFlowItem(WorkFlowItem item)
{
    if (item == null)
    {
        throw new ArgumentException("work flow item must have value");
    }

    //TO DO: add a call to delete the task from worker service.
    _workFlowItems.Remove(item);
    _workFlowItemsStore.Delete(item);
}

インデントが少ないと、特にそのようなチェックが複数あるシナリオでは、コードが理解しやすくなります。

ああ、パラメータをチェックするときは、通常、パラメータ名を最初のパラメータとしてnullスローします。ArgumentNullException

throw new ArgumentNullException("item");
于 2013-07-29T11:22:39.143 に答える
2

コメンターが述べたように、私は次のように行きます:

private void DisposeWorkFlowItem(WorkFlowItem item)
{
    if (item == null)
    {
        throw new ArgumentException("work flow item must have value");
    }

        //TO DO: add a call to delete the task from worker service.
        _workFlowItems.Remove(item);
        _workFlowItemsStore.Delete(item);

}

通常、最初に検証を行うのが私の好みです。正確性、状態、またはパラメーターを確認する必要があります。

于 2013-07-29T11:23:42.390 に答える
1

それは私にとってまったく同じであり、私が知る限り、これに対するガイドラインはありません.

ただし、読みやすくするために、最初に eception を配置することをお勧めします。

例えば

if (...) throw new Exception();

do your thing
于 2013-07-29T11:22:50.540 に答える