Swift-style-guide: если против охраны

Созданный на 25 окт. 2018  ·  3Комментарии  ·  Источник: raywenderlich/swift-style-guide

Текущее руководство по стилю ясно указывает на использование 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
}

Все 3 Комментарий

Я бы почти сказал, что раздел « Неудачные охранники » охватывает это:
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 - Да, либо это, либо вам просто требуется выход (независимо от того, вызвано ли это сбоем).

Была ли эта страница полезной?
0 / 5 - 0 рейтинги