如何用函数式编程编写可管理的代码?


14

我只是从函数式编程(使用JavaScript和Node.js)开始,从外观上看,与具有一种面向对象的范例。

使用OOP,我熟悉可以确保您的代码易于管理和扩展的实践。但是我不确定函数式编程是否有类似的约定。


4
JavaScript是一种面向对象的语言,因此请继续使用Node.js来使用OOP技巧
Jonas

5
尝试功能。这些将解决几乎所有问题。
tp1

4
这是保持节点源代码整洁,易于管理的重要资源:nodeguide.com/style.html
Daniel Bradley

2
据我所知,JavaScript唯一具有的功能编程功能是lambda(更准确地说是无名函数)和函数传递。如果您想学习函数式编程,则可能应该考虑使用Haskell或F#/ OCaml或Scala或Lisp。
宫坂丽

Answers:


8

实际上,仍然需要在某种结构系统中划分大型功能代码库。如果您熟悉OOP,则类仍然是自然的结构元素。您追求“功能对象”:概念上相关的功能放在一个类中。当然,您要避免非会话状态和对实例变量的依赖。

除了结构之外,还有某些技术(例如部分功能应用程序)在功能领域中对于扩展,可维护性和泛化而言是首选的。但是,在混合功能/对象模式下工作时,学会识别这些机会可能很困难。就个人而言,我认为在混合模式下工作是一个好主意,但要在更纯净的环境(例如Haskell提供的环境)中学习玩耍


2

函数式编程语言拥有许多强大的概念来构建高质量的代码,例如:部分应用函数,函数组合(这一函数确实很强大,我很喜欢),宏,高阶函数。并且不要忘记不变的数据结构。


1

与其放弃FP的OOP,不如尝试使用一些FP模式来增强它。任何时候您需要处理集合都是一个不错的选择,它指向一组通用的FP方法,例如map,fold和reduce。看一下underscore.js和骨干网,这是一个广泛使用前者的MVC框架。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.