1 lipca, 2019

Programiści JavaScript w dzisiejszych czasach bardzo często zajmują się programowaniem funkcyjnym, a pisanie czystych funkcji jest bardzo popularne. Czym są czyste funkcje? Nie tak dawno nauczyłem się pojęcia czystych funkcji i ku mojemu zdziwieniu pisałem już wiele czystych funkcji, nie zdając sobie sprawy, że istnieje na to określenie.

czyste funkcje

co kwalifikuje się jako czysta funkcja?

funkcja jest uważana za czystą, jeśli przestrzega następujących zasad:

  1. funkcja zawsze zwraca to samo wyjście, jeśli te same argumenty są przekazywane.
  2. funkcja nie powoduje żadnych skutków ubocznych.

wszyscy pisaliśmy czyste funkcje w przeszłości świadomie lub nieświadomie.
spójrz na czystą funkcję poniżej, która zwraca sumę dwóch liczb podanych dwoma argumentami wejściowymi.

function sumOfNumbers(a, b) { return a + b;}

wyjście tej funkcji pozostanie zawsze takie samo, jeśli te same argumenty wejściowe zostaną przekazane. Dość proste. Czyste funkcje są prostymi elementami składowymi, które zawsze mają przewidywalne zachowanie. Dlatego zawsze zwracają ten sam przewidywalny wynik, bez żadnego wpływu zewnętrznego.

Oto prosty przykład, jak wygląda nieczysta funkcja.

var value = 5;function impure(arg) { return value + 2 + 3;}

tutaj funkcja jest uważana za nieczystą, ponieważ nie używa argumentu, który został do niej przekazany. Zamiast tego używa zewnętrznej wartości, która może ulec zmianie. Dlatego też, czyniąc funkcję nieczystą z powodu zewnętrznych zakłóceń / skutków ubocznych.

w porządku, porozmawiajmy o wymaganiu drugim dotyczącym efektów ubocznych.

jakie są skutki uboczne?

skutki uboczne występują w każdej chwili, gdy twoja funkcja wchodzi w interakcję ze światem zewnętrznym.

niektóre przykłady częstych działań niepożądanych obejmują:

  • wywołanie API
  • Mutowanie danych
  • logowanie konsoli na ekran
  • manipulowanie datą drzewa DOM
  • .now (), aby uzyskać bieżącą datę/czas
  • asynchroniczne oczekiwanie na połączenia / oczekiwanie na obietnice rozwiązania
  • matematyki.random() do generowania liczb losowych

cóż, możesz się zastanawiać, jak możemy pisać funkcje bez efektów ubocznych przez cały czas. Jest to dość trudne, aby uniknąć skutków ubocznych całkowicie. Chcę tylko powiedzieć, że aby funkcja była czysta, jak sama nazwa wskazuje, nie powinna mieć żadnych skutków ubocznych.

co zyskuję pisząc czyste funkcje?

czyste funkcje

Picpedia.Org

w porządku, mamy definicje z drogi. Możesz teraz zapytać, jakie są korzyści.

testowanie jest proste

wyobraź sobie, że masz kilka czystych funkcji, które robią tylko jedną rzecz. Nie mają żadnych zewnętrznych skutków ubocznych i zawsze zwracają przewidywalny wynik. Funkcje te będą o wiele łatwiejsze do przetestowania niż funkcja, która ma wiele zależności i nieprzewidywalne zachowanie. Pisanie czystego, sprawdzalnego kodu pomoże drastycznie poprawić jakość kodu.

debugowanie kodu nie jest bólem

z czystymi funkcjami, debugowanie kodu nie będzie dużym bólem, w porównaniu do debugowania nieczystych funkcji. Jeśli napotkasz problem lub błąd i zawęzisz go do czystej funkcji, możesz być spokojny, że nie musisz patrzeć poza zakres tej funkcji, aby znaleźć problem. W związku z tym, drastycznie poprawia doświadczenie debugowania dewelopera.

Memoization aby poprawić wydajność

dzięki czystym funkcjom gwarantuje się zwrócenie tego samego wyjścia dla danego wejścia. Stwarza to możliwość memoizacji. Gdy to samo wejście jest przekazywane do funkcji, może pobierać wyniki z pamięci podręcznej, dzięki czemu aplikacja działa szybciej. Buforowanie może zaoszczędzić mnóstwo zasobów i poprawić wydajność. A buforowanie czystych funkcji można wykonać bez obaw, ponieważ są one przewidywalne bez skutków ubocznych.

utrzymywany kod, łatwy do refaktoringu

jest to oczywiste. Z kodem, który jest tak czysty, łatwy do testowania i debugowania, kończy się bardzo łatwy do utrzymania Kod, jak również. Jest to ważny aspekt, który ma na uwadze przyszłość. Lata / miesiące później jeśli twoje oprogramowanie musi mieć dodatkowe funkcje i refaktoryzację, kod, który składa się z kilku czystych funkcji, będzie niezwykle intuicyjny do ponownego uwzględnienia. Nie będą miały żadnych zewnętrznych skutków ubocznych, o które programista musiałby się martwić. Nawet nowi Programiści w zespole mogą z łatwością podjąć się tego zadania.

prawdziwy przykład, który wykorzystuje czyste funkcje

Redux jest tak popularny i większość z nas używała go w niektórych projektach lub słyszała o nim. Reduktory są funkcjami, które są częścią wzoru Redux i odgrywają kluczową rolę. Najważniejszą cechą reduktorów redux jest to, że są one czystymi funkcjami.

Reduktory są czystymi funkcjami, które przyjmują stan i akcję i zwracają nowy stan.

function(state, action) => newState

Reduktory są główną częścią integracji Redux i posiadają wiele logiki biznesowej. A ponieważ redux wymusza, że reduktory muszą być czystymi funkcjami bez skutków ubocznych, otrzymujemy bardzo eleganckie i proste funkcje, które są łatwe do utrzymania

Redux jest klasycznym przykładem pisania czystych funkcji. Czerpie inspirację z programowania Funkcjonalnego i w ostatnich latach zyskał ogromną popularność. Jest szeroko stosowany w nowoczesnych aplikacjach internetowych do zarządzania państwem. Teraz znasz przyczynę jego sukcesu, T jest to wymóg pisania czystych funkcji. To sprawia, że kod jest testowalny, czysty, łatwiejszy do debugowania i łatwy do utrzymania.

podsumowanie

sprawdziliśmy, jak pisanie czystych funkcji może przynieść korzyści i zachować prosty i elegancki kod. Należy pamiętać, że czyste funkcje nie są ograniczone do JavaScript. Koncepcja ta może być przyjęta w dowolnym języku programowania. Działa dobrze z JavaScript i dowolnym funkcjonalnym językiem programowania.

jeśli chcesz poprawić swoje umiejętności JavaScript, Gorąco polecam kurs Mosh na JavaScript.

sprawdź wszystkie kursy JavaScript tutaj: https://codewithmosh.com/p/full-stack-javascript-developer-bundle

Jeśli podobał Ci się ten post, proszę rozpowszechniać i dzielić się nim. Sprawdź ponownie przed więcej postów.

Adhithi Ravichandran jest konsultantem oprogramowania z siedzibą w Kansas City. Obecnie pracuje nad tworzeniem aplikacji z Reactem, React Native i GraphQL. Jest prelegentem konferencji, autorką, blogerką i Konsultantką ds. oprogramowania. Pasjonuje się nauczaniem i rozwija się, aby przyczyniać się do społeczności technicznej dzięki swoim kursom, wpisom na blogu i zaangażowaniu w mówienie.

Tagi: javascript, czyste funkcje

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.