Sobes.tech
Junior

Czym są efekty uboczne w kontekście programowania?

sobes.tech AI

Odpowiedź od AI

Skutki uboczne to zmiana widocznego stanu programu, która zachodzi poza wartością zwracaną przez funkcję.

Główne typy skutków ubocznych:

  • Modyfikacja zmiennych globalnych lub stanu obiektów.
  • Wejście/wyjście danych (czytanie z pliku, zapisywanie do konsoli, żądania sieciowe).
  • Zmiana zawartości bazy danych.
  • Rzucenie wyjątku, który nie jest obsługiwany wewnątrz funkcji.
  • Zmiana drzewa DOM w przeglądarce.
  • Wywołanie innych funkcji z efektami ubocznymi.

Przykład funkcji czystej (bez efektów ubocznych):

// Funkcja tylko dodaje dwa liczby i zwraca wynik
function add(a, b) {
  return a + b;
}

Przykład funkcji z efektem ubocznym (zmiana zmiennej globalnej):

let total = 0;

// Funkcja dodaje wartość i zmienia globalną zmienną
function addToTotal(value) {
  total += value; // Efekt uboczny: zmiana globalnej zmiennej
  return total;
}

Wpływ efektów ubocznych:

  • Utrudniają testowanie.
  • Utrudniają równoległe wykonywanie kodu z powodu potencjalnych warunków wyścigu.
  • Sprawiają, że kod jest mniej przewidywalny i trudniejszy do zrozumienia.
  • Mogą naruszać zasady programowania funkcyjnego.

W rozwoju frontend efekty uboczne często są związane z:

  • Manipulacją DOM.
  • Żądaniami HTTP.
  • Operacjami na Local Storage lub Session Storage.
  • Pracą z API stron trzecich.

Zarządzanie efektami ubocznymi jest ważnym zadaniem przy budowaniu niezawodnych i łatwych do utrzymania aplikacji. Wzorce takie jak Redux (z naciskiem na przewidywalne zarządzanie stanem i oddzielenie efektów ubocznych w akcje/sagi) lub użycie funkcji czystych tam, gdzie to możliwe, pomagają minimalizować ich negatywny wpływ.