New_Horizons
@New_Horizons
Бред:

Конструкция if или switch?

Вопрос простой и тупой. Два варианта одного и того же кода. Как бы вы написали и почему? Названия методов и переменных значения не имеют.

if (
	$this->inComplete($oldStatus, $newStatus) ||
	$this->outComplete($oldStatus, $newStatus)
) {
	$this->action();
	$this->save();
}


switch (true) {
	case ($this->inComplete($oldStatus, $newStatus)):
	case ($this->outComplete($oldStatus, $newStatus)):
		$this->action();
		$this->save();
}
  • Вопрос задан
  • 1153 просмотра
Пригласить эксперта
Ответы на вопрос 3
saboteur_kiev
@saboteur_kiev
software engineer
в данном конкретном случае switch явно не нужен.
switch Нужен когда у вас есть переменная, которую вы хотите сравнить с разными значениями и в зависимости от этого делать разные действия. А вы в качестве условия switch вообще true пишете, и case без завершения - это с точки зрения читабельности, очень неявный OR.
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Второй вариант это хорошая попытка, но недостаточно полно реализованная. Писать надо хотя бы так

(function() { 
    foreach([true] as $condition) {
        $condition = ($condition) ? true : false; 
        while ($condition) {
            switch (true) {
                case ($this->inComplete(($oldStatus), ($newStatus))):
                case ($this->outComplete(($oldStatus), ($newStatus))):
                    ($this->action());
                    ($this->save());
            }
            break;
        }
    }
})();

В общем, перед тем как задавать вопрос на тостере, надо сесть и хорошенько сначала самому подумать, каких бессмысленных операторов можно добавить в код, кроме switch.
Ответ написан
pOmelchenko
@pOmelchenko
php-developer
If в котором бы вызывал один метод обертку возвращающий bool значение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 мар. 2024, в 11:54
3000 руб./за проект
19 мар. 2024, в 11:52
3000 руб./за проект
19 мар. 2024, в 11:49
10000 руб./за проект