Що спільного між Pure Function та приготуванням кави в автоматі?
(Ага, я пам’ятаю, що вам дуже сподобалася аналогія з Макдональдсом)
Отже, чиста функція (Pure Function) — це функція, яка завжди дає один і той самий результат для тих самих вхідних даних і не має побічних ефектів. Це означає, що чиста функція відповідає двом основним вимогам:
- Детермінізм;
- Відсутність побічних ефектів.
Детермінізм, побічні ефекти (Side Effects)? А що воно взагалі таке?
Детермінізм — це коли ти викликаєш функцію з однаковими аргументами, а вона завжди повертає один і той самий результат.
Побічні ефекти — це дії, які відбуваються під час виконання функції і впливають на стан поза цією функцією, або залежать від зовнішнього стану: тобто, зміна глобальних змінних, модифікація об’єктів, які передаються у функцію, робота з файлами, мережеві запити тощо.
Дочитали? Це добре. Продовжуємо далі!
А тепер уявіть два способи приготування кави: за допомогою кавомашини і вручну.
Кава через автомат (Чиста функція):
- Та сама кава, якщо нажати на ту саму кнопку. Той самий смак і порція того самого розміру;
- Сьогодні, вчора, завтра — все без змін;
- Автомат не змінює нічого навколо себе, на кухні чисто. Щось побурухтіло всередині і все.
Кава вручну (Не чиста функція):
- Оооо! Інша справа! Ви можете поспішати, або ні. Можете робити каву зранку, або вдень. Вчора дві ложки цукру додали, а сьогодні п’єте без — тут залежить від вашого настрою;
- Тобто, два рази поспіль ви можете отримати різну каву, навіть якщо використовуєте ті самі інгредієнти;
- Побічні ефекти? Під час приготування, ви можете залишити неприбраним посуд на кухні, використовувати різні інструменти і змінювати їхній стан.
Напишіть, будь ласка, чи сподобалися вам мої приклади з кавою!
І тримайте корисну статтю на тему.
Цей текст з особистого блогу, опублікований з дозволу автора.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: