0

MySQL データベースからレコードをマップする Entity クラスがあります。たとえば、Entity クラスを継承するクラス User は、テーブル user をマップします。

class User extends Entity
{
    function init(){ $this->_table = 'user';}
}

ID 30 のオブジェクトをマップするときに使用します

$user = new User(30);

オブジェクト ID 30 が利用できない場合 (削除されたとしましょう) を処理する最善の方法は何ですか?

  1. 「このオブジェクトは利用できません」という例外をスローします
  2. null オブジェクトを返します。

長所/短所のあるソリューションまたは一連のソリューションをいただければ幸いです。

4

5 に答える 5

1

オブジェクトが利用できないさまざまな理由を例外に含めることができるため、このような場合に例外を使用するのが好きです。あなたにはわからない null オブジェクトです。

于 2012-07-16T20:59:20.273 に答える
1

例外のスローは、アプリケーションで例外的な状況が発生したことを意味します。私の意見では、特定の ID が存在しないオブジェクトは例外的な状況ではありません。null オブジェクトを返すことにしました。

また、例外をスロー/キャッチするメカニズムには、パフォーマンスの低下が伴います。

于 2012-07-16T20:59:51.800 に答える
0

個人的には、エラー コード プロパティを持つオブジェクトを返すことを好みます。

于 2012-07-16T21:22:49.633 に答える
0

例外をスローします。このようにして、User オブジェクトを構築しようとしている場所ならどこでもそれをキャッチし、そこで何をすべきかを決定できます。

于 2012-07-16T20:59:33.920 に答える
0

これらの「ID」がどこから来ているか、どのように生成されているかなど、プログラムの設計を知らずに言うのは難しいです。
ここでの長所/短所は、プログラムの設計と特定の状況でのニーズに基づいています。 . それらを評価したら、何が最適かを判断できます。

于 2012-07-16T21:27:57.627 に答える