В сегодняшней короткой статье я расскажу о некоторых хороших практических правилах, когда следует использовать операторы switch вместо операторов if else и наоборот. Хотя это могут быть не универсальные жесткие правила для каждого проекта кодирования, важно знать плюсы и минусы использования операторов switch и операторов if-else.

Операторы Switch

  • Хорошо использовать, если есть только одно условие для сравнения. В приведенном выше примере код нужно сравнивать только с переменной powerUpID, поэтому использование здесь оператора switch было бы идеальным.
  • Может дополнительно включать случай default, где, если powerUpID не соответствует ни одному из установленных выше случаев, у него будет случай для запуска логики по умолчанию. Поскольку я настроил powerUpID как перечисление типа PowerUpType , мне не нужно беспокоиться о неподдерживаемом случае, поскольку все они будут перечислены через перечисление PowerUpType.

  • Необходимо включить ключевое слово break после завершения случая, чтобы предотвратить проверку компилятором всех других случаев.
  • Операторы switch могут поддерживать несколько строк под блоком case и прямо перед ключевым словом break, но код становится труднее читать. На мой взгляд, именно здесь лучше всего проявляются операторы if-else, поскольку скобки помогают разделить блоки логики на более читаемые фрагменты. Другим вариантом было бы сгруппировать блоки логики в свою собственную вспомогательную функцию, чтобы блок case имел только 1 строку, за которой следует ключевое слово break.

операторы if-else

  • Хорошо использовать, если есть более 1 условия, которые необходимо выполнить с помощью оператора && (И) или || оператор (ИЛИ).
  • Подобно тому, как работает ключевое слово break, оператор else выполняется только в том случае, если предыдущий оператор if неверен. Другими словами, если первый оператор if в приведенном выше примере верен, компилятор пропустит все остальные операторы else if.
  • Недостатком операторов if-else является то, что вам, возможно, придется несколько раз сравнивать одну и ту же переменную с разными значениями. Например, запись if (powerUpID == PowerUpType.TRIPLE_SHOT) и if (powerUpID == PowerUpType.SPEED_BOOST) может стать повторяющейся для первой половины оператора if, и вместо этого лучше использовать оператор switch, чтобы избежать необходимости писать if(powerUpID == несколько раз для разных случаев.

Спасибо за чтение! :)