Jak pisać zarządzalny kod za pomocą programowania funkcjonalnego?

14

Właśnie zacząłem od programowania funkcjonalnego (z JavaScript i Node.js) i z wyglądu wygląda to tak, jakby kod, który piszę, stałby się piekłem bazy kodu do zarządzania, w porównaniu do języków programowania, które mają rodzaj paradygmatu obiektowego.

Dzięki OOP znam praktyki, które zapewniłyby łatwe zarządzanie kodem i jego rozszerzalność. Ale jestem pewny podobnej konwencji z programowaniem funkcjonalnym.

Dade
źródło
4
JavaScript jest językiem zorientowanym obiektowo, więc używaj swoich umiejętności OOP za pomocą Node.js
Jonas
5
wypróbuj funkcje. Rozwiązają one prawie każdy problem.
tp1,
4
Oto świetny zasób na temat utrzymywania uporządkowanego i uporządkowanego kodu źródłowego węzła, dzięki czemu można nim zarządzać: nodeguide.com/style.html
Daniel Bradley
2
O ile mi wiadomo, jedyną funkcjonalną funkcją programowania JavaScript jest lambdas (dokładniej, funkcje bezimienne) i przekazywanie funkcji. Jeśli chcesz nauczyć się programowania funkcjonalnego, prawdopodobnie powinieneś zajrzeć do czegoś takiego jak Haskell lub F # / OCaml lub Scala lub Lisp.
Rei Miyasaka

Odpowiedzi:

8

W praktyce duża funkcjonalna baza kodu nadal będzie musiała zostać podzielona na jakiś system strukturalny. Jeśli czujesz się komfortowo w OOP, zajęcia pozostają naturalnym elementem strukturyzującym. Dążysz do „obiektów funkcjonalnych”: funkcje powiązane koncepcyjnie są umieszczone razem w klasie. Oczywiście unikasz stanu bez konwersacji i polegasz na zmiennych instancji.

Wychodząc poza strukturę, istnieją pewne techniki, takie jak stosowanie funkcji częściowych, które są preferowane w świecie funkcjonalnym ze względu na rozszerzenie, łatwość konserwacji i generalizację. Nauka rozpoznawania tych możliwości może być jednak trudna podczas pracy w hybrydowym trybie funkcjonalnym / obiektowym. Osobiście uważam, że dobrym pomysłem jest praca w trybie hybrydowym, ale nauka i zabawa w czystszym środowisku, takim jak Haskell.

Larry OBrien
źródło
2

Funkcjonalne języki programowania korzystają z wielu zaawansowanych koncepcji budowania kodu wysokiej jakości, na przykład: Częściowo zastosowane funkcje, kompozycje funkcji (ten jest naprawdę potężny i mój ulubiony), makra, funkcje wyższego rzędu. I nie można zapomnieć o niezmiennych strukturach danych.

Chiron
źródło
1

Zamiast porzucać OOP dla FP, spróbuj rozszerzyć go o niektóre wzorce FP. Za każdym razem, gdy potrzebujesz przetworzyć kolekcję, jest dobrym kandydatem i wskazuje na wspólny zestaw metod FP, takich jak mapowanie, pasowanie i zmniejszanie. Spójrz na underscore.js i backbone, framework MVC, który w dużym stopniu korzysta z tego pierwszego.

sunwukung
źródło