Утверждения не должны использоваться для проверки любых вводимых пользователем данных. Их также не следует использовать для проверки ошибок. Assert - способ упростить отладку для программиста в случае неудачного тестирования. Также это способ облегчить понимание вашего кода.
Рассмотрим этот пример:
function calculateSomeCrazyFormula(a,b,c) {
var d = a+b+c;
....
k = (x + y)*2;
assert(k != 0);
l = d/k;
....
return x;
}
Моя формула по спецификации гарантирует , что k никогда не будет 0. Здесь я использовал assert почти как комментарий в своем коде. Это не подтверждает логику - это полностью противоположность. С утверждениями я проверяю правильность моей реализации этой сложной логики. Позже, когда я вернусь к своему коду и увижу l = d/k
, я не буду подозревать, что происходит, когда k равно 0, потому что я вижу там свой assert
и понимаю, что 0
никогда не должно произойти.
Кроме того, если где-то произошла ошибка и 0
действительно произошла, вы обычно увидите более глубокую ошибку. Например:
function otherFormula(a,b,c) {
var x = calculateSomeCrazyFormula(a,b,c);
var y = doSomeStuff(x);
var z = doOtherStuff(y);
return z;
}
Без утверждений вы получите неверный результат этой функции. Вы не будете знать, почему вы получаете 0, когда оно должно быть 1. Вам нужно будет построчно отлаживать код и понимать, что пошло не так.
Однако с утверждениями вы сразу же заметите ошибку «утверждение не выполнено» и мгновенно сведете к минимуму область для поиска проблемы.
Утверждения полезны на любом языке программирования, включая Javascript, однако их не должно быть в среде Live. Поэтому, некоторые постпроцессорные системы должны удалять все утверждения из вашего кода перед выпуском.