Pure Functions w JavaScript

Funkcje czyste (pure functions) są fundamentalnym pojęciem w programowaniu funkcyjnym. Funkcja czysta to taka, która dla tych samych argumentów zawsze zwraca te same wyniki i nie wywołuje żadnych obserwowalnych efektów ubocznych, takich jak modyfikacja zmiennych globalnych czy operacje we/wy. W tej lekcji przyjrzymy się, jak można wykorzystać funkcje czyste w JavaScript, aby pisać bardziej przewidywalny i łatwiejszy do testowania kod.

Przykład użycia funkcji czystej w JavaScript

Załóżmy, że mamy zadanie obliczenia podatku VAT od danej kwoty. Funkcja czysta, która wykonuje to zadanie, będzie przyjmować kwotę netto i stawkę VAT jako argumenty, a następnie zwracać kwotę brutto.

// Funkcja czysta do obliczania kwoty brutto z podatkiem VAT
function calculateGross(net, taxRate) {
    return net + (net * taxRate);
}

Przykład z HTML

Aby użyć naszej funkcji czystej w praktycznym przykładzie, stworzymy prosty formularz HTML, który pozwoli użytkownikowi wprowadzić kwotę netto i stawkę VAT, a następnie użyjemy naszej funkcji do wyświetlenia obliczonej kwoty brutto.

<!DOCTYPE html>
<html>
<head>
    <title>Obliczanie kwoty brutto z podatkiem VAT</title>
</head>
<body>
    <label for="netAmount">Kwota netto:</label>
    <input type="number" id="netAmount" name="netAmount">
    <label for="taxRate">Stawka VAT (w formie dziesiętnej):</label>
    <input type="number" id="taxRate" name="taxRate" step="0.01">
    <button onclick="displayGross()">Oblicz kwotę brutto</button>
    <p id="result"></p>

    <script>
        // Funkcja wywoływana po kliknięciu przycisku
        function displayGross() {
            const net = parseFloat(document.getElementById('netAmount').value);
            const taxRate = parseFloat(document.getElementById('taxRate').value);
            const gross = calculateGross(net, taxRate);
            document.getElementById('result').innerText = `Kwota brutto: ${gross}`;
        }
    </script>
</body>
</html>

Co sprawia, że funkcja jest “czysta”?

  1. Stałe wyniki: Dla tych samych argumentów funkcja zawsze zwraca te same wyniki.
  2. Brak efektów ubocznych: Funkcja nie zmienia żadnych stanów ani nie wykonuje operacji na zewnątrz swojego zakresu.

Zalety używania funkcji czystych

  • Testowalność: Funkcje czyste są łatwiejsze do testowania, ponieważ ich wyniki zależą wyłącznie od argumentów.
  • Przewidywalność: Kod staje się bardziej przewidywalny, co ułatwia debugowanie i utrzymanie.

Podsumowanie

Funkcje czyste w JavaScript oferują potężne narzędzie do pisania kodu, który jest nie tylko łatwiejszy do zrozumienia i testowania, ale także bardziej przewidywalny. Przyjmując zasady funkcji czystych, programiści mogą znacznie poprawić jakość swojego kodu, unikając typowych pułapek związanych z niezamierzonymi efektami ubocznymi i złożonymi zależnościami.

 

Scroll to Top