Ответ
Чистая функция — это функция, которая обладает двумя ключевыми свойствами:
- Детерминированность (Deterministic): Для одних и тех же входных аргументов всегда возвращает одинаковый результат.
- Отсутствие побочных эффектов (No Side Effects): Не изменяет внешнее состояние (глобальные переменные, параметры-ссылки, файловую систему, БД) и не зависит от изменяемого внешнего состояния.
Примеры:
// ЧИСТАЯ функция
public static int Add(int a, int b) => a + b;
public static string Greet(string name) => $"Hello, {name}!";
// НЕЧИСТАЯ функция (зависит от внешнего, изменяемого состояния)
private static int _counter = 0;
public static int GetNextId() => ++_counter; // Побочный эффект: изменяет _counter
// НЕЧИСТАЯ функция (результат недетерминирован)
public static int GetRandom() => new Random().Next(); // Разный результат при каждом вызове
// НЕЧИСТАЯ функция (выполняет ввод-вывод)
public static void Log(string message) => File.AppendAllText("log.txt", message);
Почему это важно? Преимущества чистых функций:
- Тестируемость: Легко проверить, не требуя сложной настройки окружения (mocks, stubs).
- Предсказуемость и надежность: Поведение функции изолировано и понятно.
- Возможности для оптимизации: Кэширование результатов (мемоизация), параллельное выполнение.
- Упрощение рассуждений о коде: Функцию можно анализировать и понимать в отрыве от контекста выполнения.
Чистые функции являются фундаментальной концепцией функционального программирования и крайне полезны даже в объектно-ориентированном коде для создания более стабильных и поддерживаемых модулей.
Видео-ответы
▶
Собеседование Frontend Angular 415 gross + 20% премии
▶
Собеседование на позицию Senior Python Developer 4000$ #9
▶
ЖЕСТКОЕ РЕАЛЬНОЕ СОБЕСЕДОВАНИЕ НА MIDDLE/SENIOR FRONTEND РАЗРАБОТЧИКА С ЗП ДО 340К!!!
▶
Почти Senior или ...? / Техсобес на позицию Middle Python Developer / Mock interview
▶
Джун был тимлидом, разрабатывал телеграм ботов и стал миддлом? / Техсобес Middle Python Developer
▶
#2 Собеседование смелого Frontend Middle разработчика
▶
#2 Собеседование смелого Frontend Middle разработчика
▶
Собеседование PHP , апрель 2024(1 из 2, Searchanise/Simtech Group)
▶
Frontend Собеседование с разбором. Путь к трудоустройству 2024
▶
Frontend собеседование. Пятеро на одного. Устоял или сдался?
▶
Frontend Собеседование. Вопросы + Лайвкодинг. Моковое собеседование
▶
Год опыта | Собеседование frontend | ЛАЙВ КОДИНГ
▶
Собеседование frontend разработчика #8 индивидуальное менторство
▶
Собеседование frontend стажера 2023
▶
Собеседование frontend junior+ разработчика (CSS, HTML, JS, React, Typescript, Redux)
▶
Вопросы на собеседовании по PYTHON
▶
#11 Фронтендер в 17 лет? Собеседование Frontend Junior
▶
#9 С Java на JavaScript в 35. Собеседование на Frontend Junior разработчика
▶
Собеседование JUNIOR FRONTEND REACT разработчика