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.
Odpowiedzi:
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.
źródło
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.
źródło
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.
źródło