У меня есть этот код в функции:
if ($route !== null) { // a route was found
$route->dispatch();
} else {
// show 404 page
$this->showErrorPage(404);
}
Теперь PHPmd выдает ошибку:
Метод run использует выражение else. Остальное никогда не нужно и
Вы можете упростить код для работы без других.
Теперь мне интересно, действительно ли это будет лучший код, чтобы избежать использования else и просто добавить оператор return к части if?
Я не буду беспокоиться о том, что говорит PHPmd, по крайней мере, в этом случае.
Вероятно, они подразумевали, что вы используете условный оператор, потому что (по их мнению) его «чище».
$route !== null ? $route->dispatch() : $this->showErrorPage(404) ;
PHPMD ожидает, что вы будете использовать оператор раннего возврата, чтобы избежать блока else. Что-то вроде следующего.
function foo($access)
{
if ($access) {
return true;
}
return false;
}
Вы можете подавить это предупреждение, добавив следующее в свой блок документации класса.
/**
* @SuppressWarnings(PHPMD.ElseExpression)
*/
Вы обычно можете переписать выражение, чтобы использовать только 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"
}