Skutek uboczny, efekt uboczny (ang. side effect) – dowolny efekt wyrażenia lub wywołania funkcji, który wykracza poza zwrócenie wartości, np. interakcja z systemem operacyjnym lub zmiana wartości zmiennej globalnej. Innymi słowy skutek uboczny następuje, gdy modyfikowany zostaje jakiś stan programu poza swoim lokalnym środowiskiem, to znaczy następuje zauważalna interakcja ze „światem zewnętrznym”, oprócz zwracania wartości.
Pomimo nazwy (nieco mylącej) wiele funkcji jest wywoływanych właśnie w celu uzyskania skutku ubocznego.
Np. wyrażenie 2 + 3
nie ma skutków ubocznych, natomiast wyrażenie a = 2 + 3
ma oczywisty skutek uboczny na zmiennej nielokalnej a
– modyfikuje jej wartość. Innym przykładem skutku ubocznego jest poniższa funkcja w Perlu:
sub add() {
my $val = 0;
$count++;
$val += $_ foreach (@_);
return $val;
}
Jej zasadniczym celem jest zwrócenie sumy wartości podanych argumentów, ale efektem ubocznym jest wyłącznie zwiększenie wartości pewnej zmiennej globalnej $count
.