Почему чистый код запрещает другое выражение

У меня есть этот код в функции:

if ($route !== null) { // a route was found
$route->dispatch();
} else {
// show 404 page
$this->showErrorPage(404);
}

Теперь PHPmd выдает ошибку:

Метод run использует выражение else. Остальное никогда не нужно и
Вы можете упростить код для работы без других.

Теперь мне интересно, действительно ли это будет лучший код, чтобы избежать использования else и просто добавить оператор return к части if?

13

Решение

Я не буду беспокоиться о том, что говорит PHPmd, по крайней мере, в этом случае.

Вероятно, они подразумевали, что вы используете условный оператор, потому что (по их мнению) его «чище».

$route !== null  ?  $route->dispatch() : $this->showErrorPage(404) ;
1

Другие решения

PHPMD ожидает, что вы будете использовать оператор раннего возврата, чтобы избежать блока else. Что-то вроде следующего.

function foo($access)
{
if ($access) {
return true;
}

return false;
}

Вы можете подавить это предупреждение, добавив следующее в свой блок документации класса.

/**
* @SuppressWarnings(PHPMD.ElseExpression)
*/
28

Вы обычно можете переписать выражение, чтобы использовать только if, и это делает субъективно код более читабельным.

Например, этот код будет вести себя так же, если showErrorPage прервет выполнение кода.

if ($route == null) {

$this->showErrorPage(404);
}
$route->dispatch();

Если содержание вашего оператора if не нарушает выполнение, вы можете добавить возврат

if ($route == null) {

$this->showErrorPage(404);
return;
}
$route->dispatch();

Если вы находитесь внутри цикла, вы можете пропустить эту итерацию, используя continue

    foreach ($things as $thing ) {
if ($thing == null) {
//do stuff and skip loop iteration
continue;
}

//Things written from this point on act as "else"
}
0
По вопросам рекламы [email protected]