假设我有一个名为Man
的OO语言中的对象,而Man
具有属性name
。如果我有一个向这个人打招呼的功能,我应该发送Man.name
作为参数还是发送Man
。例如,在python中:
def sayHello(Man):
print 'hello! ' + Man.name
def sayHello2(name):
print 'hello! ' + name
哪一个更好?为什么呢?
答案 0 :(得分:1)
如果您的函数需要名称,而Man没有其他属性,请发送名称。原因是减少耦合(例如,你不需要知道Man的属性)。
如果你的函数需要Man的两个或多个属性,你应该传递该对象。校长被称为“保留整个对象”,来自Martin Fowler的书 Refactoring:改进现有代码的设计。