Це, можливо, погана ідея. По-перше, це емблема максими: "визначення божевілля роблять одне і те ж саме двічі і щоразу очікуючи різних результатів". По-друге, ця схема кодування не відповідає собі. Наприклад:
Припустимо, ваш апаратний рівень мережі повторно відправляє пакет тричі під час відмови, чекаючи, скажімо, секунди між відмовами.
Тепер припустимо, що програмний рівень повторно надсилає сповіщення про помилку тричі щодо відмови пакету.
Тепер припустимо, що рівень сповіщення тричі активує сповіщення про помилку доставки сповіщень.
Тепер припустимо, що рівень повідомлення про помилки тричі активує рівень сповіщення про помилку сповіщення.
А тепер припустимо, що веб-сервер повторно активує повідомлення про помилку тричі про помилку.
А тепер припустимо, що веб-клієнт тричі повторно надсилає запит, отримуючи помилку від сервера.
Тепер припустимо, що лінія на мережевому комутаторі, яка повинна спрямовувати сповіщення до адміністратора, відключена. Коли нарешті користувач веб-клієнта отримує повідомлення про помилку? Я роблю це приблизно через дванадцять хвилин.
Щоб ви не думали, що це лише дурний приклад: ми бачили цю помилку в коді клієнта, хоча і набагато гірше, ніж я описав тут. У конкретному коді клієнта розрив між станом помилки, що сталася, і тим, що нарешті повідомляється користувачеві, склав кілька тижнів, оскільки стільки шарів автоматично повторювались з очікуванням. Уявіть собі, що було б, якби було десять спроб замість трьох .
Зазвичай правильна ситуація з умовою помилки - це негайно повідомити про це і дати користувачеві вирішити, що робити. Якщо користувач хоче створити політику автоматичних повторних спроб, дозвольте їм створити цю політику на відповідному рівні в абстракції програмного забезпечення.