switch(true)
5 апреля 2019
Не так часто встречаю использование switch(true)
в коде:
switch(true)
{
case $this->isExpired($product):
// ...
break;
case $this->isFinal($product):
// ...
break;
default:
// ...
break;
}
Это эквивалент следующего:
if ($this->isExpired($product)) {
// ...
} elseif ($this->isFinal($product)) {
// ...
} else {
// ...
}
Какой из вариантов вам приятней читать?
Комментарии RSS по email OK
Третий.
switch ($this->getState()) { case self::STATE_EXPIRED: // ... break; case self::STATE_FINAL: // ... break; default: // ... }
Свич-тру нормальная штука, но в пхп вербозная, много текста писать. В качестве хорошего примера котлин - там when и все. Без брейков, без (true).
Пользуюсь частенько, читается норм.
Если только ради fallthrough, но редко.
Мне больше второй вариант по душе, switch(true) как-то попахивает...
Конструкция switch(true) вообще похожа на антипаттерн. Используется не по целевому аудиторию.
Ганджоба Двенадцатый, почему не по целевому? Всегда использую первый метода, читабельность на много выше и проще расширять.
Конструкция switch делает неявное приведение типов, а посему ее стоит избегать.
Стараюсь всегда избегать switch. По моему мнению код с if читается гораздо легче.
Привет! Зависит от ситуации. Switch непривычен и есть чувство что он для этого. If-elseif не люблю, т.к. приходится помнить про другие условия и else. Чаще делаю так:
if (condition1) { ... return; } if (condition2) { ... return; }
*...не для этого
Тимурик: +1.
Второй
Второй вариант выглядит чище для чтения. Первый вариант похож на код-хак - монструозное использование switch в этом контексте.