Ich habe Clojure jetzt für eine Weile erforscht, obwohl ich es für keine nicht trivialen Projekte verwendet habe. Grundsätzlich habe ich mich gerade mit der Syntax und einigen Redewendungen vertraut gemacht. Da Clojure die erste funktionale Sprache ist, mit der ich mich intensiv befasst habe, bin ich natürlich nicht so vertraut mit der funktionalen Art, Dinge zu tun.
Gibt es jedoch bestimmte Workflows oder Entwurfsmuster, die bei der Erstellung großer funktionaler Anwendungen häufig vorkommen? Ich würde gerne anfangen, funktionale Programmierung "real" zu nutzen, aber ich befürchte, dass dies bei meinem derzeitigen Mangel an Fachwissen zu einem epischen Misserfolg führen würde.
Die "Gang of Four" ist ein solcher Standard für OO-Programmierer, aber gibt es etwas Ähnliches, das sich mehr auf das Funktionsparadigma bezieht? Die meisten Ressourcen, die ich gefunden habe, haben großartige Programmiernuggets, aber sie treten nicht zurück, um ein breiteres, architektonischeres Erscheinungsbild zu erzielen.
Antworten:
Muster dieser Art sind normalerweise Symptome eines gebrochenen, nicht geeigneten zugrunde liegenden Modells.
OOP ist vom Design her defekt, für die meisten seiner Anwendungen ungeeignet, daher platzt es vor all den sogenannten "Mustern". Das Funktionsmodell ist (nur ein bisschen) flexibler, und der Bedarf an "Mustern" ist dort nicht so offensichtlich.
Sobald Sie einen (für die funktionalen Programmierer natürlichen) sprachorientierten Ansatz anwenden und DSLs für jede bestimmte Problemdomäne verwenden oder erstellen, werden Sie feststellen, dass überhaupt keine Muster angezeigt werden, da Sie immer ein geeignetes Modell für verwenden ein Problem beschreiben.
Natürlich sind einige wiederkehrende "Muster" oder "Rezepte" auf hoher Ebene unvermeidlich, selbst in der sehr abstrakten, sauberen und reinen Mathematik, aber sie sind von einer anderen Art und von einer anderen Abstraktionsstufe als die GoF-Muster. Sie finden zum Beispiel Monaden nützlich.
quelle
Designmuster sind meiner Meinung nach semantisch. Ich erinnere mich, dass ich einige meiner alten Apps mit MVC umgeschrieben habe, um sicherzustellen, dass ich das Muster so gut verstand, wie ich dachte. Aber am Ende habe ich nichts von MVC über meinen ursprünglichen Code gewonnen.
Wenn ich jedoch meinen ursprünglichen Code auf eine größere Entwicklungsumgebung anwenden und jemandem mitteilen würde, dass es ein Problem mit dieser bestimmten Methode gibt ... wäre es für diesen Entwickler schwierig, das Problem zu finden. Wenn ich jedoch sage, dass der ContractController aus irgendeinem Grund durcheinander geraten ist, würde er genau wissen, wo er anfangen soll.
Designmuster sind großartig ... aber wie gesagt, ich denke, sie sind semantisch!
EDIT: Sie Evangelisten Typen verrückt mich. Wie konnte etwas ohne MVC (oder ein anderes Designmuster) entwickelt werden?
quelle