避免孤立的块
避免孤立的块

孤立的块

4%的PHP代码有一个奇怪的疾病:孤立的块。块是一系列指令,该指令在代码中分组:块用卷曲括号标记,并且通常在流控制命令之后找到它们,例如如果…然后,对于或切换到同一分支下的几个指令。

块可能是强制性的,例如用于交换机或可选,就像所有这些一样。事实上,阻止了’T需要在代码中存在一个指令。您可以将它们放在代码中的任何地方,并围绕指示,他们赢了’t bother anyone.

<?php
{ phpinfo() ; }
?>

那么,我们如何在代码中找到孤独的块?

留下了指示

大多数时候,这些都是旧指令的剩余,这是巧妙的删除。评论给予它:

<?php

/*if (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"])) {
  // do something
} else*/ {
// Image not cached or cache outdated, we respond '200 OK' and output the image.
//@readfile($filename);
//exit($filename);
header("Content-type: $mime_type");
header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', strtotime("+6 months")), true);
header("Pragma: public");
header("Cache-Control: public");
@readfile($filename);
}
?>

您还可以找到基于()的发生,而()或执行…while(),虽然从未提到过foreach()。

开关的情况

一个不那么明显的情况发生了 转变 :案例和默认有时会获得块,如下所示:

<?php 
switch($a) { 
   case 'a': { 
     doSomething() ; 
   } 
   default : { 
     doDefault() ; 
   } 
} 
?>

案例和默认唐’需要任何块,但它不起作用’在这里加入它们。毕竟,案例和默认是它们根本不使用的唯一情况。当案例复杂时,它们也可能有助于可读性。

这可以包括在编码约定中。然而,这种写作风格在项目级别中从未有效:这些块不仅是罕见的,而且它们也是在他们编码的项目中的一个小少数群体。所以,这不是主要的流行为。我不’看看来自另一个梳子的,虽然我可能是错的。或者,这可能是一个IDE人工制品,如果有块:似乎很擅长,那么情况会更好地呈现。

删除孤块

作为基本规则, 孤立的块 是无用的,他们应该触发代码检查:删除孤独的块,并清洁围绕代码。