【发布时间】:2011-06-30 23:12:34
【问题描述】:
在简洁的设计方面,哪个更可取?
1) 将一个对象(比如你自己)传递给另一个类方法,该方法将直接操作所传递对象的属性。
A 类内部...
B.doStuff(this);
2) 改为传递对象的属性,并将返回值分配回属性,或通过引用传递。
A 类内部...
this.var1 = B.doStuff(this.var1);
第一种方法的缺点是模棱两可,它不明确 B 在 A 中改变了什么。 第二种方法的缺点是,除非属性通过引用/指针传递,否则需要返回一个数组,如果最终传递了很多属性,也会构成更长的函数调用。我猜正确的选择取决于具体情况,但在我做出决定之前,还有其他人可以提出的其他优点/缺点吗?
编辑:由于将有大量属性传递给第二个类(我将某些任务委托给它),我认为它保证使用第一种方法在这种情况下。我想出的另一个缺点是 B 类只能访问 A 类中的公共属性和方法,而第二种方法允许 B 类操作 A 类可能不希望向公众透露的私有属性。但是再一次,使用第二种方法更常见,当然在只访问少数变量的情况下更可取。
【问题讨论】:
标签: oop variables attributes argument-passing