Ich fand die SOLID-Prinzipien recht nützlich, wenn ich über objektorientiertes Design nachdachte .
Gibt es ähnliche / äquivalente sprachunabhängige Prinzipien, die auf die funktionale Programmierung zugeschnitten sind?
Ich fand die SOLID-Prinzipien recht nützlich, wenn ich über objektorientiertes Design nachdachte .
Gibt es ähnliche / äquivalente sprachunabhängige Prinzipien, die auf die funktionale Programmierung zugeschnitten sind?
Antworten:
Es ist ein bisschen schwierig, Äquivalente zu finden, aber ich kann versuchen:
SOLID erweist sich auch für die funktionalen / imperativen Bereiche als gute Idee.
SRP - "Nur eines tun" wurde in erster Linie aus der imperativen Programmierung übernommen. Es ist gut, kleine, fokussierte Funktionen zu haben.
OCP - Es ist gut, das Verhalten zu ändern, ohne den Code zu ändern. Funktionale Programmierung verwendet Funktionen höherer Ordnung mehr als Vererbung, aber das Prinzip gilt.
LSP - Das Einhalten eines Schnittstellenvertrags ist in der funktionalen Programmierung genauso gut wie in der objektorientierten. Wenn eine Sortierfunktion einen Komparator verwendet, ist das Verhalten '0 ist gleich, liefert weniger als negative Ergebnisse, als positive Ergebnisse' zu erwarten.
ISP - Die meisten funktionalen Sprachen haben noch Strukturen. Die Angabe der kleinsten Datenmenge, die für eine Funktion erforderlich ist, ist immer noch eine gute Praxis. Das Erfordernis der am wenigsten spezifischen Schnittstelle zu den Daten (warum sollte man Listen von Ints verwenden, wenn Aufzählungen von T genauso gut funktionieren?) Ist immer noch eine gute Praxis.
DIP - Die Angabe von Parametern für eine Funktion (oder eine Funktion höherer Ordnung, um sie abzurufen) anstelle einer harten Codierung ist bei der funktionalen Programmierung genauso gut wie bei der objektorientierten Programmierung.
Und selbst bei der objektorientierten Programmierung gelten viele dieser Prinzipien für die Gestaltung von Methoden in den Objekten.