Uważam, że zasady SOLID są bardzo przydatne, gdy myślimy o projektowaniu obiektowym.
Czy istnieje podobny / równoważny zestaw zasad niezależnych od języka dostosowanych do programowania funkcjonalnego?
Uważam, że zasady SOLID są bardzo przydatne, gdy myślimy o projektowaniu obiektowym.
Czy istnieje podobny / równoważny zestaw zasad niezależnych od języka dostosowanych do programowania funkcjonalnego?
Odpowiedzi:
Trochę trudno jest znaleźć odpowiedniki, ale mogę spróbować:
SOLID okazuje się dobrym pomysłem także w królestwie funkcjonalnym / imperatywnym.
SRP - „Zrób tylko jedną rzecz” pochodzi przede wszystkim od programowania imperatywnego. Posiadanie małych, skoncentrowanych funkcji jest dobre.
OCP - Umożliwianie zmiany zachowań bez modyfikowania kodu jest dobre. Programowanie funkcjonalne wykorzystuje funkcje wyższego rzędu bardziej niż dziedziczenie, ale zasada obowiązuje.
LSP - Przestrzeganie niektórych umów interfejsu jest tak samo dobre w programowaniu funkcjonalnym, jak i obiektowym. Jeśli funkcja sortowania przyjmuje komparator, można oczekiwać, że „0 jest równe, mniej niż daje wyniki ujemne, większe niż wyniki dodatnie”.
ISP - Większość języków funkcjonalnych nadal ma struktury. Określanie najmniejszego zestawu danych wymaganych przez funkcję jest nadal dobrą praktyką. Wymaganie najmniej szczegółowego interfejsu do danych (dlaczego warto korzystać z list ints, gdy równie dobrze działają wyliczenia T?) Jest nadal dobrą praktyką.
DIP - Określanie parametrów funkcji (lub funkcji wyższego rzędu w celu ich odzyskania) zamiast twardego kodowania funkcji, aby uzyskać jakąś wartość, jest tak samo dobre w programowaniu funkcjonalnym, jak i obiektowym.
I nawet podczas programowania obiektowego wiele z tych zasad stosuje się również do projektowania metod w obiektach.