哪个更高效,将整个对象或该对象的属性传递给方法?

请考虑以下示例。

我需要检查CouponModel是否有唯一的串行密钥。

我有两个选择:

CouponModel model = GetFromSomewhere(); if (!CouponHasUniqueKey(model)) { } //or if (!CouponHasUniqueKey(model.SerialKey)) { } 

当然,在我传入整个对象的方法中,我必须访问字符串属性,而不是直接使用字符串。

哪个选项更好,为什么?

我相信表现会一样。

我也更愿意对对象本身负责:

 CouponModel coupon = GetFromSomewhere(); if (!coupon.HasUniqueKey()) { // ... } 

1.Answer已经发布,但作者心中隐藏着“问题”:

“我要通过整个对象吗?” 当他这样说时,他认为需要将一些巨型地球传递给该方法。

嗯,大多数面向对象编程语言都不是这样(C#,java,c ++ ..)

当您将对象的实例传递给方法时,您只传递一个引用而不传递任何其他内容。

2.Mind你,对象本身的属性可以是一个完整的对象,可能是该属性的大小大于对象的大小。

所以回答你的问题是为了表现的好处,你通过什么并不重要。

第二种选择更好。 如德米特定律所述。 在这种情况下,不是从优化的角度出发,而是从设计的角度出发。

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