Как написать управляемый код с функциональным программированием?

14

Я только начал с функционального программирования (с JavaScript и Node.js), и с точки зрения вещей, похоже, что код, который я пишу, вырастет в адскую базу кода для управления по сравнению с языками программирования, которые имеют своего рода объектно-ориентированная парадигма.

С ООП я знаком с практиками, которые гарантируют, что ваш код легко управляется и расширяется. Но я не уверен в подобном соглашении с функциональным программированием.

Даде
источник
4
JavaScript является объектно-ориентированным языком, поэтому продолжайте и используйте свои навыки ООП, используя Node.js
Jonas
5
попробуй функции. Это решит почти все проблемы.
1
4
Вот отличный ресурс по поддержанию исходного кода вашего узла в чистоте
Даниэль Брэдли,
2
Насколько я знаю, единственная функциональная функция программирования в JavaScript - это лямбда-выражения (точнее, безымянные функции) и передача функций. Если вы хотите научиться функциональному программированию, вам, вероятно, стоит заняться чем-то вроде Haskell или F # / OCaml, Scala или Lisp.
Рей Миясака

Ответы:

8

На практике большая функциональная кодовая база все еще должна быть разделена на какую-то структурную систему. Если вам удобно в ООП, классы остаются естественным структурирующим элементом. Вы стремитесь к «функциональным объектам»: концептуально связанные функции размещаются вместе в классе. Конечно, вы избегаете не разговорного состояния и полагаетесь на переменные экземпляра.

Выходя за рамки структуры, существуют определенные методы, такие как частичное применение функции, которые предпочтительны в функциональном мире для расширения, удобства обслуживания и обобщения. Однако научиться распознавать эти возможности может быть сложно при работе в гибридном функционально-объектном режиме. Лично я думаю, что это хорошая идея - работать в гибридном режиме, но учиться и играть в более чистой среде, например, предоставляемой Haskell.

Ларри Обриен
источник
2

Языки функционального программирования используют множество мощных концепций для построения высококачественного кода, например: частично примененные функции, композиции функций (это действительно мощный и мой любимый), макросы, функции высшего порядка. И не забыть неизменные структуры данных.

Chiron
источник
1

Вместо того, чтобы отказываться от ООП для FP, попробуйте дополнить его некоторыми шаблонами FP. В любое время, когда вам нужно обработать коллекцию, это хороший кандидат, который указывает на общий набор методов FP, таких как map, сложить и уменьшить. Взгляните на underscore.js и backbone, инфраструктуру MVC, в которой широко используются первые.

sunwukung
источник