2

私は今日早くこの間抜けな質問をし、良い答えを得ました。私が本当に尋ねるつもりだったのは次のことだと思います。

String aString = ""; // Or = null ?
if(someCondition)
   aString = "something";

return aString;

この場合、文字列を返すには文字列を初期化する必要があります。私はいつも、どちらのオプション(「」またはnullに設定するのはちょっと醜いように見える。他の人がここで何をしているのか疑問に思っていた...それとも空の文字列またはnullを渡すかどうかの問題だといつも思っていたあなたのプログラムで(そしてあなたがどちらかを処理する準備ができているなら)?

また、中間ロジックが長すぎて、条件付き(?:)演算子をきれいに使用できないと想定します。

4

7 に答える 7

3
return (someCondition) ? "something" : "";

また

return (someCondition) ? "something" : null;

通常、関数が文字列を返すと言った場合、私は実際にはnullではなく文字列を返すことを好みます。いずれにせよ、呼び出し元の関数はおそらく両方の場合をチェックする必要があります。

于 2010-07-23T19:59:29.560 に答える
1

あなたが私たちの意見を求めているので...

私は品質について少し意識しすぎています。すべての「if」ステートメントに「else」を含めることをお勧めします。これは、(1)ネストされた「if」が複数ある場合にコードを理解するのに役立つため、(2)可能性(条件が偽ですか?)

理由(1)に関しては、ネストされたifを避けたいのですが、多くのifを含むコードを継承する場合があります。

if(someCondition)
   aString = "something";
else
   aString = "";

「null」を使用すると、アプリが失敗し、追跡できるスタックがダンプされるためです。対照的に、空の文字列は物事を続けます。当然、それはコードのロジックに依存します:nullまたは""。

于 2010-07-23T20:17:34.533 に答える
1

何を達成したいかによりますが、

一般に、何も処理されなかったことを通知するためにnullを返します。後で、someConditionがtrueであるが、一緒に作成する文字列が ""である場合がポップアップする可能性があります。そのため、何も処理されなかった場合にnullを返す場合は、その場合と区別できます。 。

すなわち

String aString = null;
if(someCondition)
  aString = "something";

return aString;

しかし、それは本当にあなたが何を達成したいかに依存します...例えば、コードがUIで直接配信される文字列を一緒に構築することを想定している場合は、代わりに「」を選択します

于 2010-07-23T20:05:41.313 に答える
1

この場合、次のようなことを行うのが最適な場合があります。

public void func() {
    boolean condition = getConditionFromSomewhere();
    String condString = getAppropriateValue(condition);
}

public String getAppropriateValue(boolean condition) {
    if (condition) {
        return "something";
    } else {
        return "somethingElse";
    }
}

ブール条件では少しやり過ぎに思えるかもしれませんが、より複雑な条件(列挙型などのより多くの選択肢)に入ると、そのロジックがうまく抽象化されます。また、わかりやすいメソッド名を使用すると、起動するのがほぼ自己文書化されます。

于 2010-07-23T20:07:26.723 に答える
0

はい、これは、プログラムでnullまたは空の文字列を渡すかどうかの問題です。後で追加する予定someConditionで、最初に最初の値を指定する必要があることを示している場合は、空の文字列を使用します。文字列があるか、何もないことを示すように計画している場合は、おそらくnullを使用する方が適切です。

于 2010-07-23T20:00:47.753 に答える
0

それはあなたのAPIが何をすべきかというあなたの好みです。nullを返す場合、APIユーザーがnullをチェックしていないと、NPEを取得できる可能性があります。ただし、 ""文字列を使用している場合、nullであると想定されていなければ、エラーはサイレントに渡される可能性があります。これは、APIの記述方法の好みであり、ユースケースによって異なります。

于 2010-07-23T20:01:32.750 に答える
0

考えてみると、コード内で「」を使用することはめったにありません。

于 2010-07-25T01:26:40.827 に答える