Текущее руководство по стилю ясно указывает на использование guard
вместо вложения if
, но оно может показать пример, когда if
следует использовать вместо guard
, иначе где нет необходимости разворачивать необязательные параметры:
if !success { return false }
guard success else { return false }
Лучше всего описано здесь: https://www.natashatherobot.com/swift-when-to-use-guard-vs-if/
Я бы почти сказал, что раздел « Неудачные охранники » охватывает это:
Guard statements are required to exit in some way.
...или, как написано в блоге Наташи:
think of guard as a lightweight Assert
Поэтому вы должны сделать:
guard success else { return false }
Преимущество guard
здесь в том, что компилятор гарантирует выход. Пример:
// This compiles fine and a bug risks going unnoticed
if !success {
// Some code here
// Forgot the return statement
}
// Compiler error, you are required to return and the bug is prevented
guard success else {
// Some code here
// Forgot the return statement
}
@RobertGummesson , поэтому ваше эмпирическое правило будет таким: даже если вам не нужно разворачивать опции, вы должны использовать guard
вместо if
, если столкнетесь с ошибкой, требующей выхода. Правильный?
@agirault - Да, либо это, либо вам просто требуется выход (независимо от того, вызвано ли это сбоем).
Самый полезный комментарий
Я бы почти сказал, что раздел « Неудачные охранники » охватывает это:
Guard statements are required to exit in some way.
...или, как написано в блоге Наташи:
think of guard as a lightweight Assert
Поэтому вы должны сделать:
Преимущество
guard
здесь в том, что компилятор гарантирует выход. Пример: