处理函数内部的对象创建或将其添加到参数列表是否更好

时间:2015-04-02 22:22:29

标签: reusability

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

如您所知,编写可重用代码是科学与艺术的结合,它是开发人员编写优秀代码所必需的关键技能。

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

class Example

def func1()

  creates objectA
  ...
  ...

def func2()

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

  creates objectA
  ...
  ...

def func4()

  creates objectC
  ...
  ...

在上述情况下,最好是:

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

通常,函数具有的参数越多,开发人员为开始使用它所需的工作量就越多......

OR

B中。将对象A作为必需参数放在函数1和3中是否更好,因此一旦开发人员想要使用这些函数,他/她将不得不在函数外部创建对象A,然后将其作为参数发送给功能

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

谁在这个可重复使用的Vs性能问题上获胜?

谢谢,

的Qwerty

2 个答案:

答案 0 :(得分:0)

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

如果它必须是可交换的或可模拟的,那么你可以使它们成为一个参数,Example类的变量,或使用依赖注入之类的东西。

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

答案 1 :(得分:0)

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

谢谢,

的Qwerty