是在函数内部处理对象创建还是将其添加到参数列表中更好

Is it better to handle object creation inside the function or add it to the parameter list

这个问题与编程语言无关,但 IMO 是一个重要问题。

如您所知,编写可重用代码是科学与艺术的结合,是任何开发人员编写出色代码所必须具备的一项关键技能。

假设我有一个 class,其中包括几个函数:

class Example

def func1()

  creates objectA
  ...
  ...

def func2()

  creates objectB
  ...
  ...
def func3()

  creates objectA
  ...
  ...

def func4()

  creates objectC
  ...
  ...

在上述情况下,是否更好:

一个。在函数 1 和 3 中创建对象 A,因此一旦其他开发人员使用函数 1 或 3,他们就不必费力寻找如何将该对象作为参数发送(使用哪个构造函数来创建它等... ).

一般来说,函数的参数越多,开发者需要付出的努力就越多,才能开始使用它...

乙。将对象 A 作为函数 1 和 3 中的必需参数是否更好,因此一旦开发人员想使用这些函数,he/she 将不得不在函数外部创建对象 A,然后将其作为参数发送到函数?

如果我编写了一个使用 func1 和 func3 的程序,那么这两个函数将重复创建对象两次(性能不佳)。

谁在这个可重用与性能问题中获胜?

谢谢,

Qwerty

恕我直言,这取决于对象 A 是什么以及这些方法的作用。如果对象 A 是这些方法的私有实现细节,我不希望在参数列表中看到它们。

例如,如果它必须是可交换的或可模拟的,那么您可以使它们成为示例的参数、变量class,或者使用依赖注入之类的东西。

您始终可以创建一个新的私有方法来处理对象 A 的创建,以减少代码重复。然后最重要的是,如果需要,您可以添加一些缓存或惰性实例化以提高性能。

我接受 "usr1234567" 评论作为正确答案。

谢谢,

Qwerty