[PHP]ついやってしまいがちな汚いソース10種

Share on Facebook
Bookmark this on Delicious
Post to Google Buzz
このエントリーをはてなブックマークに追加
はてなブックマーク - [PHP]ついやってしまいがちな汚いソース10種

私自身よくやってしまうので、自分への戒めも込めて「悪いソースコード」の例を幾つか上げてみようと思います。

1. 型を意識しないで変数を使いまわす

$num = 1234;
$num = 'number' . $num;
echo $num;

気をつけてないとかなりの頻度でこうなっています。PHP ならではの現象。

2. 条件分岐やループのネストが深すぎる

if($param[0] == 'a'){
  if($param[1] == 'b'){
    foreach($arr as $value){
      if($param[2] == $value){
        for($i=0;$i<=10;$i++){
          echo 'Hello, World!';
        }
      }
    }
  }
}

たいていは目的ごとに関数を定義すると綺麗にまとまることが多い気がします。

3. 一行に詰め込みすぎる

echo htmlspecialchars(number_format($dom->getElementsByTagName('test')->item(0)->nodeValue), ENT_QUOTES);

一旦変数に入れておかないとどんどん伸びていきます。

4. マジックナンバーを使う

someFunction(100,300,200);

書いてる途中は覚えてますが後で見直すとなんの数字だったかわからなくなります。

5. 後から for 文を書き足した結果 $i, $j を変な順番で使う

for($j=0;$j<=10;$j++){
  for($i=0;$i<=10;$i++){
    echo 'hello, world';
  }
}

書き換えるのが面倒くさかったりしてそのままにしておくとややこしくなります。

6. 細か過ぎる連結

echo '<a href="' . $url . '">' . '<img src="' . $src . '" alt="' . $alt . '" />' . "</a>\n";

ヒアドキュメント使うまでもないとき使いたくなりますが、せめてダブルコーテーションで括ったほうがまだましです。
厳密にはシングルクォートで連結するとわずかに早くなるそうですが我々は陸上選手ではありません。

7. 似た内容なのにインデントしない

$apple=true;
$orange=false;
$grapefruitmixjuice=true;

同じグループの変数を宣言するならイコールを揃えたほうが見やすくなります。
イコールの前後にスペースを入れたほうが更にいいと思います。

8. やたら複雑な配列変数を一発で宣言する

$array = array(
  'food' => array(
    'fruit' => array('apple', 'orange')
  ),
  'animals' => array(
    array(
      'name' => 'rabbit',
      'color' => 'white'
    )
  )
);

さすがにサンプルは大げさですがどんどん膨らんでいった結果こうなるときはあります。

9. 命名規則があやふや

$arrUser    = array();
$categories = array();
$STRING     = 123;

getSomething( $arrUser );
load_something( $category );

すみません、私です。

10. すごく日本語

$toukousuu = 100;
$ninzuu    = 20;

$heikin = $toukousuu / $ninzuu;

これは絶対にやらない。でも他人のソースがこうなっていると嫌がらせかと思います。
「$me-ru」とか書いてあると鳥肌が立ちます。



Similar Posts:

This entry was posted in PHP and tagged . Bookmark the permalink.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>