gpt4 book ai didi

java-8 - Java : Are Instance methods Prohibited for Domain Objects in Functional Programming?

转载 作者:行者123 更新时间:2023-12-05 05:08:54 27 4
gpt4 key购买 nike

既然函数式编程将数据和行为分开对待,并且行为不应该改变实例的状态,那么 FP 是否建议域对象完全不要使用实例方法?还是我应该始终将所有字段声明为最终字段?我在面向对象语言(如 Java)的上下文中提出了更多要求。

最佳答案

Since Functional Programming treats Data and Behavior separately,

听说说了很多,但不一定是真的。是的,在句法上它们是不同的,但是 封装 也是 FP 中的一个东西。您真的不希望暴露您的数据结构,原因与您不希望在 OOP 中使用它的原因相同,您希望稍后对其进行改进。您想要添加功能或对其进行优化。一旦您授予对数据的直接访问权限,您实际上就失去了对该数据的控制。

比如在haskell中,有模块,其实就是一个单元中的数据+行为。通常,数据的“构造函数”(即对“字段”的直接访问)不可用于外部函数。 (总是有异常(exception)。)

does FP recommends not having instance methods at all for Domain Objects

FP 是一种范例,它表示软件应该使用(数学)函数的(数学)组合来构建。基本上就是这样。现在,如果你足够仔细,你可以将一个方法称为一个函数,只需要一个额外的参数 this。前提是一切都是不可变的。

所以我会说不,“FP”没有明确定义语法,它可以在某些条件下与对象兼容。

I am asking more in the context of Object oriented languages like Java.

这是有点模糊的地方。 Java 不太适合做函数式编程。请记住,它可能借鉴了传统 FP 语言的某些语法,但这并不适合 FP。

例如不变性、纯函数、函数组合都是你应该做 FP 的东西,Java 没有这些。我的意思是您可以编写代码来“假装”,但您会逆流而上。

关于java-8 - Java : Are Instance methods Prohibited for Domain Objects in Functional Programming?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57983901/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com