Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 什么时候应该使用函数vs方法?_Function_Oop_Functional Programming - Fatal编程技术网

Function 什么时候应该使用函数vs方法?

Function 什么时候应该使用函数vs方法?,function,oop,functional-programming,Function,Oop,Functional Programming,假设我有一些输入,我正在生成一些输出。 我不需要保持状态 我应该使用一个函数还是创建一个类,该类将有一个 看起来和那个函数完全一样 一个比另一个有什么优势? (除了使用对象更容易的单元测试之外)来自Java背景,这个问题就像询问您是否应该创建一个静态final“Utils”类、一个要注入的服务类或一个具有行为的“智能”数据载体 正如个人观点,一般来说,如果方法确实是无状态的,那么创建静态final“utils”类就更容易、更简单了 但正如有人在上面的评论中指出的那样,它和长一样广泛,真的。“除了

假设我有一些输入,我正在生成一些输出。 我不需要保持状态

我应该使用一个函数还是创建一个类,该类将有一个 看起来和那个函数完全一样

一个比另一个有什么优势?
(除了使用对象更容易的单元测试之外)

来自Java背景,这个问题就像询问您是否应该创建一个
静态final
“Utils”类、一个要注入的服务类或一个具有行为的“智能”数据载体

正如个人观点,一般来说,如果方法确实是无状态的,那么创建
静态final
“utils”类就更容易、更简单了


但正如有人在上面的评论中指出的那样,它和长一样广泛,真的。

“除了单元测试,使用对象更容易”—怎么回事?基本上是一样的。假设你没有对它们中的任何一个进行变异,那么方法就是一个函数,其中第一个参数是预先确定的(类的实例)。例如
append(str1,str2)
str1。append(str2)
可以做同样的事情。在Common Lisp中,它甚至比其他语言更相似,因为方法实现是在所有参数的签名上选择的,而不仅仅是第一个参数。@daniel earwicker要模拟您调用的函数,您需要类似于测试挂钩的东西,但要模拟类,您只需创建从类继承的MockClass,并通过依赖项注入传递该类的一个实例。@RodrigoRuiz-任何半体面的语言都可以让您将函数作为值传递给其他函数,因此函数和无状态类之间在一个方法上没有任何区别。