是在函数内部处理对象创建还是将其添加到参数列表中更好
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
这个问题与编程语言无关,但 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