考虑以下示例。
我需要检查 CouponModel 是否具有唯一的序列号。
我有两个选择:
CouponModel model = GetFromSomewhere();
if (!CouponHasUniqueKey(model))
{
}
//or
if (!CouponHasUniqueKey(model.SerialKey))
{
}
当然,在我传入整个对象的方法中,我必须访问字符串属性,而不是直接使用字符串。
哪个选项更好,为什么?
考虑以下示例。
我需要检查 CouponModel 是否具有唯一的序列号。
我有两个选择:
CouponModel model = GetFromSomewhere();
if (!CouponHasUniqueKey(model))
{
}
//or
if (!CouponHasUniqueKey(model.SerialKey))
{
}
当然,在我传入整个对象的方法中,我必须访问字符串属性,而不是直接使用字符串。
哪个选项更好,为什么?
我相信性能会是一样的。
我也更愿意将责任交给对象本身:
CouponModel coupon = GetFromSomewhere();
if (!coupon.HasUniqueKey()) {
// ...
}
1.答案已经贴出来了,虽然作者心中隐藏着“问题”:
“我应该通过整个对象吗”?当他这样说时,他认为需要将一些巨大的地球传递给方法。
大多数面向对象的编程语言(C#、java、c++ ..)并非如此
当您将对象的实例传递给方法时,您只传递了一个引用而不是其他任何东西。
2.请注意,对象本身的属性可以是整个对象,并且可能是该属性的大小大于对象的大小。
因此,回答您的问题是为了性能优势,您通过什么并不重要。
第二种选择更好。正如得墨忒耳法则所说。在这种情况下,不是从优化的角度来看,而是从设计的角度来看。