Если некоторые защитные заявления важнее других, необходимо ли их разбивать? Например:
guard let someProperty = someProperty,
someProperty < someValue else {
return
}
// if some property is OK, unwrap other properties
guard let anotherProperty = anotherProperty,
let moreProperties = moreProperties else {
return
}
Приведенный выше пример без вопросов предотвращает ненужное развертывание, если someProperty
не соответствует предикату. Однако будет ли выполнен тот же объем работы, если они будут объединены?
guard let someProperty = someProperty,
someProperty < someValue,
let anotherProperty = anotherProperty,
let moreProperties = moreProperties else {
return
}
Очевидно, что процесс будет проходить сверху вниз, но выполняет ли машина всю защиту и затем оценивает завершение или отказ, или машина выходит из защиты при первом неудачном предложении?