Чистота функции: различия между версиями

м
Роботизированная замена, унификация написания; косметические изменения
м (→‎Дополнительная информация: А зачем ссылаться на СО статей?)
м (Роботизированная замена, унификация написания; косметические изменения)
== Побочные эффекты функции ==
{{main|Побочный эффект (программирование)}}
В императивных языках некоторые функции в процессе выполнения своих вычислений могут модифицировать значения глобальных переменных, осуществлять операции ввода/-вывода, реагировать на исключительные ситуации, вызывая их обработчики. Такие функции называются '''функциями с побочными эффектами'''.
Другим видом побочных эффектов является модификация переданных в функцию параметров (переменных), когда в процессе вычисления выходного значения функции изменяется и значение входного параметра.
 
Описывать функции без побочных эффектов позволяет практически любой язык программирования. Однако некоторые языки поощряют или даже требуют от некоторых видов функций использования побочных эффектов. Например, во многих объектно-ориентированных языках в функцию-член класса передаётся скрытый параметр — указатель на экземпляр класса, от имени которого вызывается соответствующая функция (например, в [[C++]] этот параметр называется <tt>this</tt>, а в [[Object Pascal]] - <tt>self</tt>), который эта функция неявно модифицирует. Тем не менее, в языке [[C++]] можно указать для метода класса модификатор <tt>const</tt>, тем самым сообщив компилятору о том, что метод не модифицирует данные класса.
 
== Ортогональность детерминированности и побочных эффектов ==