O guia de estilo atual é claro em relação ao uso de guard
em vez de aninhar if
, mas pode mostrar um exemplo quando if
deve ser usado em vez de guard
, também conhecido como onde não há desempacotamento de opcionais necessários:
if !success { return false }
guard success else { return false }
Melhor descrito aqui: https://www.natashatherobot.com/swift-when-to-use-guard-vs-if/
Eu quase diria que a seção Failing Guards cobre isso:
Guard statements are required to exit in some way.
...ou como o blog da Natasha colocou:
think of guard as a lightweight Assert
Você deve, portanto, fazer:
guard success else { return false }
O benefício do guard
aqui é que o compilador garantirá a saída. Exemplo:
// 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 , então sua regra geral seria que - mesmo que você não precise desembrulhar opcionais - você usaria guard
sobre if
se encontrar uma falha que exija sair. Correto?
@agirault - Sim, isso ou você simplesmente precisa sair (seja ou não devido a uma falha).
Comentários muito úteis
Eu quase diria que a seção Failing Guards cobre isso:
Guard statements are required to exit in some way.
...ou como o blog da Natasha colocou:
think of guard as a lightweight Assert
Você deve, portanto, fazer:
O benefício do
guard
aqui é que o compilador garantirá a saída. Exemplo: