Похожие презентации:
Идемпотентность
1. Идемпотентность в JavaScript. Принцип надёжности для кода и API.
ИДЕМПОТЕНТНОСТЬ В JAVASCRIPT.ПРИНЦИП НАДЁЖНОСТИ ДЛЯ КОДА
И API.
2. Что
• Идемпотентность — это свойство операции,которое гарантирует одинаковый результат
независимо от того, сколько раз она
выполняется
• Другими словами, выполнение
идемпотентной операции несколько раз не
должно изменять результат после первого
успешного выполнения.
• Это понятие важно в программировании,
особенно при работе с сетевыми запросами и
базами данных, где повторные действия могут
привести к нежелательным последствиям.
3. Зачем это в реальной разработке?
• Типичные проблемы, которые решаетидемпотентность:
• UI: Пользователь дважды кликает на кнопку
"Сохранить". Без идемпотентности создадутся две
одинаковых записи.
• Сеть: Повторная отправка неудачного HTTP-запроса
(например, из-за плохой связи). Идемпотентный запрос
(PUT, DELETE) не создаст проблем.
• Обработка событий: Событие может сработать чаще,
чем мы ожидаем. Наш обработчик должен быть к этому
готов.
4. Не
let count = 0;// ПЛОХО: функция добавляет +1 каждый раз
function badCounter () {
count = count + 1;
}
badCounter (); // count = 1
badCounter (); // count = 2
badCounter (); // count = 3
Что произошло? Каждый вызов меняет результат.
5. Да
let count = 0;// ХОРОШО: функция УСТАНАВЛИВАЕТ значение
function goodCounter() {
count = 1; // Устанавливает, а не добавляет
}
goodCounter (); // count = 1
goodCounter (); // count = 1
goodCounter (); // count = 1
Что изменилось? Сколько бы раз мы ни вызвали функцию,
итоговое состояние (count = 1) не меняется.
6. Идемпотентность vs Детерминированность
Детерминированность:Функция всегда возвращает
одинаковый результат для одинаковых
входных данных.
f(2, 3) = 5 // Всегда и везде
Идемпотентность:
Функция приводит систему к
одинаковому конечному состоянию,
даже
если её вызвать много
раз.
оплатитьЗаказ(id=123)
→ статус
Это про результат
вычисления.
Это про побочный эффект и состояние
системы.
"Оплачен" Повторный вызов не создаст
новый платёж
Все идемпотентные операции в каком-то смысле предсказуемы,
но не все детерминированные операции безопасны для
повторения.
7. Итог. Зачем это вам?
Идемпотентный код — это надёжность.Проще тестировать
Проще отлаживать
Безопасно для повторов и асинхронности
Основа предсказуемых систем