Php 为什么干净的代码禁止其他表达式
我在函数中有以下代码:Php 为什么干净的代码禁止其他表达式,php,phpmd,Php,Phpmd,我在函数中有以下代码: if ($route !== null) { // a route was found $route->dispatch(); } else { // show 404 page $this->showErrorPage(404); } 现在PHPmd给出了一个错误: 方法run使用else表达式。否则就没有必要了 您可以简化代码,使其在没有其他工具的情况下工作 现在我想知道,如果避免使用else,只在if部分添加一个return语句
if ($route !== null) { // a route was found
$route->dispatch();
} else {
// show 404 page
$this->showErrorPage(404);
}
现在PHPmd给出了一个错误:
方法run使用else表达式。否则就没有必要了
您可以简化代码,使其在没有其他工具的情况下工作
现在我想知道,如果避免使用else,只在if部分添加一个return语句,是否真的会更好?我不会担心PHPmd会说什么,至少在这种情况下是这样 他们可能想让您使用条件运算符,因为(在他们看来)它“更干净”
$route !== null ? $route->dispatch() : $this->showErrorPage(404) ;
PHPMD希望您使用早期返回语句来避免else块。类似下面的内容
function foo($access)
{
if ($access) {
return true;
}
return false;
}
您可以通过向类文档块添加以下内容来抑制此警告
/**
* @SuppressWarnings(PHPMD.ElseExpression)
*/
您通常可以重写表达式以仅使用if,并且它确实主观上使代码更可读 例如,如果页面中断代码的执行,此代码将以相同的方式运行
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"
}
通过结束404生产分支删除else块:
if ($route === null) {
// show 404 page
$this->showErrorPage(404);
return;
}
// a route was found
$route->dispatch();
那么有什么比phpMD更好的吗?许多程序员经常建议学习phpMD,这更干净吗?可能是在返回语句或其他地方,但除此之外,这些都是与干净代码完全相反的。是否有任何纸张或任何类型的参考资料可以让人看一看,试图理解这条没有其他内容的规则?@AntonioCS您可以在此处找到规则详细信息:。PSR-2的建议也可以在这里找到。规则实际上是说使用Else语句。规则和PSR建议说,没有必要采取其他措施。PHPMD规则集文档说:永远不需要带有else分支的if表达式。您可以以一种不需要else的方式重写条件,并且代码变得更易于阅读。要实现这一点,请使用早期返回语句。PSR-2标准在“编写更好的代码”一节中指出:*尝试尽早返回方法/函数,以避免不必要的深度。可能我们正在阅读不同的内容,但以下是我所阅读的内容:“当整个三元运算适合一行时,允许使用三元运算符。较长的三元数应拆分为if-else语句。”注意“拆分为if-else语句”。多个返回也不是很好,但是如果我不在循环或函数中呢?如果我使用的是WordPress模板部分呢?那么我想不出比使用“else”更干净的方法