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



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

正如您所知,编写可重用代码是科学和艺术的结合,这是任何开发人员编写优秀代码所必须具备的关键技能。

假设我有一个包含几个函数的类:

class Example
def func1()
  creates objectA
  ...
  ...
def func2()
  creates objectB
  ...
  ...
def func3()
  creates objectA
  ...
  ...
def func4()
  creates objectC
  ...
  ...

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

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

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

B。将对象A作为函数1和3中的必需参数更好吗?因此,一旦开发人员想要使用这些函数,他/她就必须在函数之外创建对象A,然后将其作为参数发送给函数?

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

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

谢谢,

Qwerty

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

例如,如果它必须是可交换的或可模拟的,那么您可以将它们作为example类的参数、变量,或者使用类似于依赖项注入的东西。

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

我接受"usr1234567"注释作为正确答案。

谢谢,

Qwerty

相关内容

最新更新