Wie kann man mit funktionaler Programmierung überschaubaren Code schreiben?

14

Ich habe gerade mit funktionaler Programmierung angefangen (mit JavaScript und Node.js) und aus der Sicht der Dinge sieht es so aus, als würde der Code, den ich schreibe, im Vergleich zu Programmiersprachen mit a eine verdammt gute Codebasis sein Art objektorientiertes Paradigma.

Mit OOP bin ich mit Vorgehensweisen vertraut, die sicherstellen, dass Ihr Code einfach verwaltet und erweiterbar ist. Aber ich bin mir nicht sicher, ob es eine ähnliche Konvention mit funktionaler Programmierung gibt.

dade
quelle
4
JavaScript ist eine objektorientierte Sprache, nutzen Sie also Ihre OOP-Kenntnisse mit Node.js
Jonas,
5
versuche Funktionen. Diese lösen fast jedes Problem.
1.
4
Hier ist eine großartige Ressource, um Ihren Knoten-Quellcode sauber und übersichtlich zu halten
Daniel Bradley,
2
Soweit ich weiß, ist die einzige funktionale Programmierfunktion, die JavaScript bietet, Lambdas (genauer gesagt, namenlose Funktionen) und Funktionsübergabe. Wenn Sie funktionale Programmierung lernen möchten, sollten Sie sich wahrscheinlich mit etwas wie Haskell oder F # / OCaml oder Scala oder Lisp befassen.
Rei Miyasaka

Antworten:

8

In der Praxis muss eine große funktionale Codebasis noch in eine Art strukturelles System unterteilt werden. Wenn Sie sich in OOP wohlfühlen, bleiben Klassen das natürliche Strukturierungselement. Sie streben nach "funktionalen Objekten": Konzeptuell verwandte Funktionen werden in einer Klasse zusammengefasst. Natürlich vermeiden Sie den Nicht-Konversationsstatus und die Abhängigkeit von Instanzvariablen.

Über die Struktur hinaus gibt es bestimmte Techniken wie die Anwendung von Teilfunktionen, die in der Funktionswelt für die Erweiterung, Wartbarkeit und Verallgemeinerung bevorzugt werden. Das Erkennen dieser Möglichkeiten kann jedoch schwierig sein, wenn Sie in einem hybriden Funktions- / Objektmodus arbeiten. Ich persönlich denke , es ist eine gute Idee ist Arbeit in einem Hybrid - Modus , sondern Studie und Spiel in einer reineren Umwelt, wie das von Haskell zur Verfügung gestellt.

Larry OBrien
quelle
2

Funktionale Programmiersprachen verfügen über eine Vielzahl leistungsfähiger Konzepte zum Erstellen von qualitativ hochwertigem Code, zum Beispiel: Teilweise angewandte Funktionen, Funktionskompositionen (diese ist wirklich leistungsfähig und meine Lieblingsfunktion), Makros, Funktionen höherer Ordnung. Und nicht zu vergessen unveränderliche Datenstrukturen.

Chiron
quelle
1

Anstatt OOP für FP aufzugeben, sollten Sie versuchen, es mit einigen FP-Mustern zu erweitern. Jedes Mal, wenn Sie eine Sammlung bearbeiten müssen, ist dies ein guter Kandidat und verweist auf eine Reihe gängiger FP-Methoden wie Zuordnen, Falzen und Reduzieren. Schauen Sie sich underscore.js und backbone an, ein MVC-Framework, das das erstere umfassend nutzt.

sunwukung
quelle