Functional programming 在什么级别应用函数式编程方法

Functional programming 在什么级别应用函数式编程方法,functional-programming,Functional Programming,我们应该在设计级别应用函数编程实践,即当我们识别和设计类层次结构时,还是只在编写函数体时才适用 我的感觉是,我们应用普通的OOPs技术进行设计过程,并使用函数方法编写实现 请说出你的想法 设计过程应该与面向对象无关。也许我们需要对象和类,也许我们不需要。也许有很大一部分将使用功能性技术。也许它只需要一个5分钟的perl脚本。这取决于我们试图实现的目标 也就是说,OOP可能会妨碍纯粹的功能设计。其他的论点可能是它没有。另一个论点是,你只需要运用你的最佳判断,平衡这两种范式。其他人会插嘴说,这两种方

我们应该在设计级别应用函数编程实践,即当我们识别和设计类层次结构时,还是只在编写函数体时才适用

我的感觉是,我们应用普通的OOPs技术进行设计过程,并使用函数方法编写实现


请说出你的想法

设计过程应该与面向对象无关。也许我们需要对象和类,也许我们不需要。也许有很大一部分将使用功能性技术。也许它只需要一个5分钟的perl脚本。这取决于我们试图实现的目标

也就是说,OOP可能会妨碍纯粹的功能设计。其他的论点可能是它没有。另一个论点是,你只需要运用你的最佳判断,平衡这两种范式。其他人会插嘴说,这两种方法是正交的,可以毫无冲突地结合起来


但这一切都是抽象的。答案是穆。提出您的实际问题,然后我们将能够告诉您功能性或oop方法是否合适,以及在什么级别上合适。

设计过程应该与oop无关。也许我们需要对象和类,也许我们不需要。也许有很大一部分将使用功能性技术。也许它只需要一个5分钟的perl脚本。这取决于我们试图实现的目标

也就是说,OOP可能会妨碍纯粹的功能设计。其他的论点可能是它没有。另一个论点是,你只需要运用你的最佳判断,平衡这两种范式。其他人会插嘴说,这两种方法是正交的,可以毫无冲突地结合起来


但这一切都是抽象的。答案是穆。提出您的实际问题,然后我们将能够告诉您功能性或面向对象的方法是否合适,以及在什么级别上合适。

如果您想在
FP
中实现,我在设计时有点偏向
FP
方法
但是,
Breton
很好地说明了选择是主观的

参考资料

  • 另一个堆栈溢出问题:。
    • JavaScript:
    • F#底漆:
    • 讨论主题:
    • 链接:

  • 如果要在
    FP
    中实现,我在设计时有点偏向
    FP
    方法
    但是,
    Breton
    很好地说明了选择是主观的

    参考资料

  • 另一个堆栈溢出问题:。
    • JavaScript:
    • F#底漆:
    • 讨论主题:
    • 链接:

  • 我同意采用FP实现技术的OOP高级分解是一个好策略;我在博客中对此进行了讨论:


    我同意使用FP实现技术的OOP高级分解是一个好策略;我在博客中对此进行了讨论:

    ,开发团队的,有一个有趣的博客,标题是

    我倾向于同意他的评估,即函数式编程在实现和单个例程级别上对实际代码结构的影响最大,而在模块和子系统级别上对总体架构的影响较小

    这就是说,我还认为FP会影响问题的攻击方式,通常会导致完全不同的方法,如DSL、异步代码、过滤图、参与者等,但这些都可以被视为“中间”解决方案,不会影响更大的体系结构,如分布式、REST、客户机-服务器等,有一个有趣的博客名为

    我倾向于同意他的评估,即函数式编程在实现和单个例程级别上对实际代码结构的影响最大,而在模块和子系统级别上对总体架构的影响较小


    也就是说,我还认为FP会影响问题的攻击方式,并且通常会导致完全不同的方法,如DSL、异步代码、过滤图、参与者等,但这些都可以被视为“中间”解决方案,不会影响更大的体系结构,如分布式、REST、客户机-服务器等,OO并不一定意味着“状态”。当我开始使用Smalltalk时,我意识到代码通常会返回新对象、副本或将对象视为无状态值。事实上,这加强了OO性:您可以只发送消息,而不必担心不必要的副作用。当然,仍然可以编写一堆杂乱无章的有状态代码,但不知何故,无状态风格感觉很自然。PS:您描述的命令模式是退化的;在带有闭包的OO语言中,它是不需要的。但是,当您需要设置/记录/撤消更改(例如prevayler样式的持久化)时,这个命令仍然很有用。当我开始使用Smalltalk时,我意识到代码通常会返回新对象、副本或将对象视为无状态值。事实上,这加强了OO性:您可以只发送消息,而不必担心不必要的副作用。当然,仍然可以编写一堆杂乱无章的有状态代码,但不知何故,无状态风格感觉很自然。PS:您描述的命令模式是退化的;在带有闭包的OO语言中,它是不需要的。但当您需要设置/记录/撤消更改(例如prevayler样式的持久化)时,该命令仍然很有用。感谢所有人提供这些精彩的答案。我得出以下结论:FP在实现级别上很好,而OOPs在更抽象的级别上很好。感谢大家给出如此精彩的答案。我得出了以下结论:FP在实现级别上很好,OOPs在更抽象的级别上很好。大家好!经过如此紧张的研究,我发现这个链接非常有用,因为它解决了大多数问题