【发布时间】:2011-01-09 19:25:14
【问题描述】:
我正在用 Python 编写一小段代码,很好奇其他人对此有何看法。
我有几个类,每个类都有几个方法,并且正在尝试确定什么是“更好”:通过方法调用传递对象,或者在只需要来自对象的一种方法时通过方法调用传递方法。基本上,我应该这样做:
def do_something(self, x, y, manipulator):
self.my_value = manipulator.process(x, y)
或者这个
def do_the_same_thing_but_differently(self, x, y, manipulation):
self.my_value = manipulation(x, y)
在我看来,第二个可以说是“更好”,因为它促进了操作和其他类之间更松散的耦合/更强的内聚。对于对象只需要一个方法的情况,我很想看到一些支持和反对这种方法的论据。
编辑:我删除了 OOP 措辞,因为它显然令人不安。我主要指的是松耦合和高内聚。
【问题讨论】:
-
更强的 OOP?你用什么来衡量 OOP 的“强度”?我以前从未见过这种情况。你有报价或链接吗?
-
什么是“更好”取决于您要达到的目标。如果函数只对调用该方法感兴趣,则传递该方法会给您更大的灵活性(您可以给它任何可调用的)。另一方面,如果它想对
manipulator对象做任何其他事情,或者如果你想确保你只是调用一个特定的方法,你必须使用第一个方法。 -
那是耦合,不是 OO。我很好奇您对“Stronger OOP”短语的使用。我对“强耦合”和“松耦合”并不好奇。
-
“明显令人不安”?也许你的意思是“令人困惑”。
标签: python oop functional-programming loose-coupling cohesion