Coding style 编码风格:使用参数还是实例变量?

Coding style 编码风格:使用参数还是实例变量?,coding-style,Coding Style,我通常有一些函数,它们接受一个参数,将一个实例变量设置为该参数,然后执行其他操作,例如: def updateFoo(self, foo): self.foo = foo fooProcessor1(foo) fooProcessor2(self.foo) 您喜欢像在fooProcessor1中那样传递参数本身,还是像在fooProcessor2中那样传递新设置的实例变量?为什么?为什么不?编码人员应该懒惰。自己在凌晨1点输入太多了。编码员应该是懒惰的。自己在凌晨1点输

我通常有一些函数,它们接受一个参数,将一个实例变量设置为该参数,然后执行其他操作,例如:

def updateFoo(self, foo):
    self.foo = foo
    fooProcessor1(foo)
    fooProcessor2(self.foo)

您喜欢像在
fooProcessor1
中那样传递参数本身,还是像在
fooProcessor2
中那样传递新设置的实例变量?为什么?为什么不?

编码人员应该懒惰。自己在凌晨1点输入太多了。

编码员应该是懒惰的。自己在凌晨1点输入太多了。

一个名为
setFoo()
的函数实际上不应该做任何事情,而应该设置
foo
,除非它正在计算和缓存从foo派生的值,在这种情况下,我建议如下:

  def setFoo(self, foo):
      self.foo = foo
      self.__fooUpdated()

  def __fooUpdated(self):
      # Recompute values derived from foo, dispatch signal to listeners, etc.

在您建议的选项中,我更喜欢
fooProcessor1(foo)
。也就是说,这主要是个人偏好的问题。只要你是一致的,我认为这并不重要。

一个名为
setFoo()
的函数实际上不应该做任何事情,而只是设置
foo
,除非它正在计算和缓存从foo派生的值,在这种情况下,我建议如下:

  def setFoo(self, foo):
      self.foo = foo
      self.__fooUpdated()

  def __fooUpdated(self):
      # Recompute values derived from foo, dispatch signal to listeners, etc.

在您建议的选项中,我更喜欢
fooProcessor1(foo)
。也就是说,这主要是个人偏好的问题。只要你是始终如一的,我认为这并不重要。

我并不是说它只是一个setter function,这些funct还可以做其他事情。更改了函数name@Claudiu-就风格而言,您正在设置
self.foo
,然后根据
self.foo
的新值重新计算内容。它可能会分裂头发,但这与基于参数
foo
重新计算值并不完全相同。正因为如此,我喜欢Michael的解决方案,它将关注点分开。我不是说它只是一个setter function,这些funct也做其他事情。更改了函数name@Claudiu-就风格而言,您正在设置
self.foo
,然后根据
self.foo
的新值重新计算内容。它可能会分裂头发,但这与基于参数
foo
重新计算值并不完全相同。正因为如此,我喜欢Michael的解决方案,它将关注点分开。