处理呼叫者或被呼叫者的数据?

时间:2013-01-11 14:43:54

标签: coding-style

假设我有一个名为Man的OO语言中的对象,而Man具有属性name。如果我有一个向这个人打招呼的功能,我应该发送Man.name作为参数还是发送Man。例如,在python中:

def sayHello(Man):
    print 'hello! ' + Man.name

def sayHello2(name):
    print 'hello! ' + name

哪一个更好?为什么呢?

1 个答案:

答案 0 :(得分:1)

如果您的函数需要名称,而Man没有其他属性,请发送名称。原因是减少耦合(例如,你不需要知道Man的属性)。

如果你的函数需要Man的两个或多个属性,你应该传递该对象。校长被称为“保留整个对象”,来自Martin Fowler的书 Refactoring:改进现有代码的设计