0

これは一般的な質問であり、興味深いのは、どのようなアプローチを使用しているのか、そして長所と短所は何ですか? メソッドが (たとえば、NSMutableArrayまたはNSArrayobj-c で) リストを返す場合があり、現在のアプローチでは、返すものが何もない場合は nil を返します。ネイティブ クラスまたはカスタム クラスのオブジェクトである場合は nil を返すのが理にかなっていますが、何も見つからない場合は、割り当て済みまたは初期化済みの空の配列を返す必要がありますか?

質問は主に対象としてobjective-cいますが、他の言語にも関連しています。Objective-cにはメソッドを呼び出す優れた機能がありますがnil、これは他のすべての言語には当てはまりません。javaそのため、他の開発者 ( 、c#および開発者)からの議論を聞くのも興味深いことPHPです。

更新質問を閉じることに投票している人がいるのは奇妙です。設計パターン関連の質問は個人的な意見の質問として説明することもできますが、アーキテクチャとコードの品質に関する質問は、単なる構文の質問よりも重要です。

4

4 に答える 4

2

私が信じる答えは一つではありません。

私自身は、可能な場合は予想される型の結果を返し、それ以外の場合は NULL を返すことにしました。

たとえば、自作の DAL では、getAllメソッドは空の配列 (リスト) を返すためforeach、エラーを発生させずに PHP のオペレーターに渡すことができます。
一方、getRow連想配列を返すことになっているメソッドは、空の配列も同様に役に立たないため、データが見つからない場合は NULL を返します。

于 2013-01-15T08:26:39.210 に答える
1

null と空のコンテナを返すことには、私の意見では 2 つの異なる意味があります。空のコンテナーは を意味no result matched your query but it was successfulし、null の結果は を意味しsomething went wrongます。

最初のケースで、どこかにコードを書いた場合:

  print "You have found" + GetResults.Size() + " results" 

ゼロの結果がクエリに一致したことを印刷できます。を使用することにした場合nullは、明示的なチェックを追加する必要があります。

また、Web サーバー要求への応答として結果を JSON にシリアライズする際に問題が発生しました。後で、空の配列ではなく null を返すことを選択したことを後悔しました。

于 2013-01-15T08:25:42.517 に答える
0

nil を返すか、明らかに何もないものを返します。必要以上の仕事をしない。

空の配列を返すと、多くの役に立たないポインターと構造体が割り当てられる可能性があります。本当に必要なのは、「何もありません」と言うだけの場合です。

于 2013-01-15T08:28:09.747 に答える
0

ココアでは、

nil後で確認する必要がある配列にa を返す場合は、配列 Index にアクセスしようとしていないことを確認してください。

nilそして、オブジェクトのない配列の代わりに返すのは良いことです。

于 2013-01-15T08:28:27.183 に答える