Coding style 在调用者或被调用者中处理数据?

Coding style 在调用者或被调用者中处理数据?,coding-style,Coding Style,假设我有一个OO语言中的对象,名为Man,而Man有一个属性name。如果我有一个函数向这个人问好,我应该发送man.name作为参数还是只发送man。例如,在python中: def sayHello(Man): print 'hello! ' + Man.name def sayHello2(name): print 'hello! ' + name 哪一个更好?为什么?如果您的函数需要名称,而不需要Man的其他属性,只需发送名称即可。原因是为了减少耦合(sayHello

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

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

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

哪一个更好?为什么?

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

如果函数需要两个或多个Man属性,则可能应该传递对象。其原理来自Martin Fowler的《重构:改进现有代码的设计》一书,称为“保留整个对象”