2

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

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

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

哪一个更好?为什么?

4

1 回答 1

1

如果您的函数需要名称,并且不需要 Man 的其他属性,只需发送名称即可。原因是为了减少耦合(sayHello 不需要知道 Man 的属性)。

如果您的函数需要 Man 的两个或更多属性,您可能应该传递该对象。主体在 Martin Fowler 的书Refactoring: Improvement the Design of Existing Code中称为“Preserve Whole Object” 。

于 2013-01-11T14:55:13.037 回答