这个问题与编程语言无关,但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