ErrCounter >= limit
сильнее ErrCounter == limit
. У вас есть прибыль без риска.
Это на всякий случай. Проблема в том, что может быть что-то еще, что увеличивает ErrCounter
, в то время как в одном из состояний (или даже в переходном состоянии) или ErrCounter
может уже быть равным пределу при запуске процесса (кстати, это должно привести к отклонению в любом случае). но не берите в голову).
Давайте сделаем это примером из жизни. Представьте себе эти два сценария (скажем, limit = 3
):
Держатель карты уже пробовал трижды в какой-то другой точке (например, в магазине), не используя правильный пин-код. Сейчас ErrCounter = 3
. Держатель карты решает попробовать еще раз в банкомате. Банкомат считывает ErrCounter
(как часть Authentication
) и, поскольку CheckPin
не удалось (автоматически из-за слишком большого количества предыдущих попыток), теперь ErrCounter
снова увеличивается (поэтому ErrCounter = 4
). В слабом случае вы можете попробовать снова и снова в бесконечном цикле.
Карта дублирована (вы знаете, теперь она может обрабатываться, например, через любой телефон NFC). Представьте, что два человека хотят снять большую сумму, чтобы они одновременно работали в двух банкоматах. Неудача в том, что они оказываются в ситуации, когда оба они дважды ошибаются, вводя PIN-код. Допустим, банкомат читает текущий ErrCounter
как часть Authentication
. Итак, имеем (в скобках результирующий ErrCounter
):
- партнер 1 вводит неправильный PIN-код на банкомате1 (
ErrCounter = 1
)
- партнер 2 вводит неверный PIN-код на банкомат2 (
ErrCounter = 2
)
- партнер 1 вводит неверный PIN-код на банкомат 1 (
ErrCounter = 3
). Попытка партнера 1 (с телефоном) теперь отклонена
- партнер 2 вводит неверный PIN-код на банкомат 2 (
ErrCounter = 4
). Если бы не было >=
, это снова поставило бы бесконечный цикл попыток. При более сильном неравенстве эта попытка также отклоняется.