gpt4 book ai didi

java - 静态方法使 Java 成为一种伪函数式语言?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:16:59 25 4
gpt4 key购买 nike

我一直在考虑 post Misko Hevery 认为 Java 中的静态方法可测试性已死。我不想讨论可测试性问题,而是更多地讨论静态方法的概念。为什么人们如此讨厌它?

的确,我们没有闭包(但我们有一个有点笨拙的匿名函数)、lambdas 和作为一流对象的函数。在某种程度上,我认为静态方法可用于将函数模拟为一流对象。

最佳答案

函数式编程的一个特点是数据的不变性。 static 确实暗示您不需要表示状态的对象(实例),所以这不是一个糟糕的开始。但是,您在类级别上确实有状态,但是您可以将其设置为 final。由于(静态)方法根本不是一等函数,您仍然需要像匿名类这样的丑陋构造来接近 Java 中某种风格的函数式编程。

FP 最好用函数式语言来完成,因为它具有必要的语言支持 诸如高阶函数、不变性、引用透明性等。

但是,这并不意味着您不能使用像 Java 这样的命令式语言以函数式风格进行编程。也可以给出其他示例。不是因为你在用 Java 编程,所以你在做 OOP。您可以使用 C++ 等结构化语言对全局数据和非结构化控制流 (goto) 进行编程。我可以用像 Scheme 这样的函数式语言来做 OOP。等等

Steve McConnell 在 Code Complete 中提到了语言编程与编程语言的区别(也是 SO 上非常流行的引用)。

所以,简而言之,如果你说“静态方法模仿一等函数”,我不同意。

但是,如果我认为这更像是您试图表达的重点,您会说“静态方法有助于在 Java 中以函数式风格进行编程”,我同意。

关于java - 静态方法使 Java 成为一种伪函数式语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/585031/

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