12

タイトルがあいまいな場合は申し訳ありませんが、言い方がわかりませんでした。

望まない結果がifステートメントに入るように条件を表現する方がよいでしょうか。それとも、関数を終了するか、必要な結果をテストして、コードでステートメントに従う必要があります。

たぶんいくつかの例が役立つでしょう:

否定的な結果をテストすることの意味:

if(myObject == null) {
    return;
}

//do whatever with myObject

肯定的な結果をテストすることの意味:

if(myObject != null) {
    //do whatever with myObject
}

申し訳ありませんが、誰かが私よりもうまく言葉を言うことができるなら、してください。

4

2 に答える 2

8

私は個人的に、オブジェクトがnullであるかどうかをチェックし、すぐに戻る最初の方法を好みます。これにより、「実際のコード」がインデントされていない線形のままになり、ネストされた多くのifステートメントを防ぐことができます。それ以外の場合、両方の方法が有効であり、同じ結果になります。状況に最も適したものを選択してください(他のステートメントまたはifステートメントに依存する可能性があります)。

これが良い例です:

if (object1 == null) {
    return;
}
// do some stuff
if (object2 == null) {
    return;
}
// do some stuff
if (object3 == null) {
    return;
}

とは対照的に:

if (object1 != null) {
    // do some stuff
    if (object2 != null) {
        // do some stuff
        if (object3 != null) {
            // do some stuff
        }
    }
}

私は最初のものがはるかに読みやすいと思います。

于 2013-02-12T08:32:53.003 に答える
0

結果セットが空であること、または変数が割り当てられていないことをログに記録するなど、肯定的な条件を満たす場合に実行できる有効なアクションがある場合は、肯定的な条件を使用することをお勧めします。ここでは、文字列をテストするときに、Apache Commons StringUtils isNotBlank()などのAPIが役立ちます。ただし、最もクリーンなことは、たとえば、変数がnull以外の場合にのみ処理を続行できるようにするなど、否定的なテストを行うことです。

于 2014-06-30T08:04:31.143 に答える