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-任何半体面的语言都可以让您将函数作为值传递给其他函数,因此函数和无状态类之间在一个方法上没有任何区别。