0

重複の可能性:
null を返すのは悪い設計ですか?

ユーザーに何かを入力するように求めるプロンプトがあるとします。ユーザーが私の仕様と一致しない場合、elseブロックは を返しますnull。これは悪い習慣ですか?ifもしそうなら、 /elseブロックの範囲内でプロンプトを繰り返すにはどうすればよいですか?

    if( foo.equalsIgnoreCase( "y" ) ) {
      リターンバー[x][y];
    }
    else if( foo.equalsIgnoreCase( "n" ) ) {
      リターンバー[x++][y];
    }
    そうしないと {
      null を返します。
    }

4

3 に答える 3

1

nullは、この目的に使用するのに適した値です。それは悪い習慣ではありません。何かを使用する必要があり、null「定義されていない」セマンティクスがあります。

他のオプションは、ユーザーが入力したものを返し、「「y」でないか「n」でない場合はもう一度尋ねる」ことをテストすることですが、実際には、!value のようなものをテストするだけでより複雑になります。

javadocs に「ユーザーが 'y' または 'n' を入力しない場合、メソッドは null を返す」ことを必ず文書化してください。

于 2012-07-29T17:58:00.907 に答える
1

null戻り値としては確かに悪い習慣ではありません。あなたの場合に正しい選択であるかどうかは、メソッドと残りのクラス インターフェイスによって異なります。

于 2012-07-29T18:00:13.010 に答える
-1

この 3 番目のオプションを表す定数を定義する方がよいと思います。

ソースコードが読みやすくなります。

設定したい場合は問題ありませんが、後で問題が発生nullする可能性があるため、お勧めしません。NullPointerException

このため、私nullは多くの状況で貧弱な練習を返すことを検討しています.

詳細については、こちらをご覧ください: https://stackoverflow.com/a/1274822/383414 (誰かがこの質問に重複の可能性があるとフラグを立てました)

于 2012-07-29T18:00:14.883 に答える