为什么干净的代码禁止 else 表达式
Why does clean code forbid else expression
我在函数中有这段代码:
if ($route !== null) { // a route was found
$route->dispatch();
} else {
// show 404 page
$this->showErrorPage(404);
}
现在PHPmd报错:
The method run uses an else expression. Else is never necessary and
you can simplify the code to work without else.
现在我想知道避免 else 并在 if 部分添加 return 语句是否真的是更好的代码?
我不会担心 PHPmd 说的,至少在这种情况下。
他们可能想让你使用条件运算符,因为(在他们看来)它是 'cleaner'。
$route !== null ? $route->dispatch() : $this->showErrorPage(404) ;
PHPMD 希望您尽早使用 return 语句来避免 else 块。类似于以下内容。
function foo($access)
{
if ($access) {
return true;
}
return false;
}
您可以通过将以下内容添加到您的 class 文档块来抑制此警告。
/**
* @SuppressWarnings(PHPMD.ElseExpression)
*/
您通常可以重写表达式以仅使用 if 并且它确实在主观上使代码更具可读性。
例如,如果 showErrorPage 中断代码的执行,此代码将以相同的方式运行。
if ($route == null) {
$this->showErrorPage(404);
}
$route->dispatch();
如果您的 if 语句的内容没有中断执行,您可以添加一个 return
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"
}
通过结束 404 生产分支删除 else 块:
if ($route === null) {
// show 404 page
$this->showErrorPage(404);
return;
}
// a route was found
$route->dispatch();
这个答案来晚了,但您可以使用另一种方法来解决这个问题 else if
。因为有时你不能只 return
如果要遵循某些逻辑。
有你的榜样
if ($route !== null) { // a route was found
$route->dispatch();
}
else if ($route === null) {
$this->showErrorPage(404);
}
$route->doSomething();
我在函数中有这段代码:
if ($route !== null) { // a route was found
$route->dispatch();
} else {
// show 404 page
$this->showErrorPage(404);
}
现在PHPmd报错:
The method run uses an else expression. Else is never necessary and you can simplify the code to work without else.
现在我想知道避免 else 并在 if 部分添加 return 语句是否真的是更好的代码?
我不会担心 PHPmd 说的,至少在这种情况下。
他们可能想让你使用条件运算符,因为(在他们看来)它是 'cleaner'。
$route !== null ? $route->dispatch() : $this->showErrorPage(404) ;
PHPMD 希望您尽早使用 return 语句来避免 else 块。类似于以下内容。
function foo($access)
{
if ($access) {
return true;
}
return false;
}
您可以通过将以下内容添加到您的 class 文档块来抑制此警告。
/**
* @SuppressWarnings(PHPMD.ElseExpression)
*/
您通常可以重写表达式以仅使用 if 并且它确实在主观上使代码更具可读性。
例如,如果 showErrorPage 中断代码的执行,此代码将以相同的方式运行。
if ($route == null) {
$this->showErrorPage(404);
}
$route->dispatch();
如果您的 if 语句的内容没有中断执行,您可以添加一个 return
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"
}
通过结束 404 生产分支删除 else 块:
if ($route === null) {
// show 404 page
$this->showErrorPage(404);
return;
}
// a route was found
$route->dispatch();
这个答案来晚了,但您可以使用另一种方法来解决这个问题 else if
。因为有时你不能只 return
如果要遵循某些逻辑。
有你的榜样
if ($route !== null) { // a route was found
$route->dispatch();
}
else if ($route === null) {
$this->showErrorPage(404);
}
$route->doSomething();