4

次の例を考えてみましょう。

CouponModel に一意のシリアル キーがあるかどうかを確認する必要があります。

2 つの選択肢があります。

CouponModel model = GetFromSomewhere();

if (!CouponHasUniqueKey(model))
{
}

//or

if (!CouponHasUniqueKey(model.SerialKey))
{
}

もちろん、オブジェクト全体を渡すメソッドでは、文字列を直接操作するのではなく、文字列プロパティにアクセスする必要があります。

どちらのオプションが優れていて、その理由は?

4

3 に答える 3

5

性能は同じだと思います。

また、オブジェクト自体に責任を負わせたいと思います。

CouponModel coupon = GetFromSomewhere();
if (!coupon.HasUniqueKey()) {
  // ...
}
于 2012-04-08T03:10:41.833 に答える
3

1.回答はすでに投稿されていますが、著者の心には「問題」が隠されています。

「オブジェクト全体を渡しましょうか」? 彼がそのように言うとき、彼はいくつかの巨大な地球儀をメソッドに渡す必要があると考えています。

ほとんどのオブジェクト指向プログラミング言語 (C#、java、c++ ..) には当てはまりません。

オブジェクトのインスタンスをメソッドに渡すときは、参照のみを渡し、他には何も渡しません。

2.オブジェクト自体のプロパティはオブジェクト全体である可能性があり、そのプロパティはオブジェクトのサイズよりも大きいサイズである可能性があります。

したがって、あなたの質問への答えは、何を渡すかは問題ではありません。

于 2012-04-08T03:45:51.333 に答える
2

2 番目のオプションの方が適しています。デメテルの法則で述べられているように。この場合、最適化の観点からではなく、設計の観点からです。

http://en.wikipedia.org/wiki/Law_of_Demeter

于 2012-04-08T05:33:25.067 に答える