私自身よくやってしまうので、自分への戒めも込めて「悪いソースコード」の例を幾つか上げてみようと思います。
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";
ヒアドキュメント使うまでもないとき使いたくなりますが、ダブルコーテーションで括ったほうがまだましです。
厳密にはシングルクォートで連結するとわずかに早くなるそうですが我々は陸上選手ではありません。
printf() を使うのも良いと思います。
7. 省略しすぎる
if($p > $m && $t != 0){ $nx = true; $cp = cp($p); }
Javascriptなら有効かもしれませんが、変数に何が入っているか検討がつかないのはバグの元になります。
8. やたら複雑な配列変数を一発で宣言する
$array = array( 'food' => array( 'fruit' => array('apple', 'orange') ), 'animals' => array( array( 'name' => 'rabbit', 'color' => array('name' => 'white', 'code' => '#FFFFFF') ) ) );
どちらかというと関数設計段階での問題なので避けられないケースも有ります。
丁寧にインデントして可読性を高める等の工夫が必要です。
9. 命名規則があやふや
$arrUser = array(); $categories = array(); $STRING = 123; getSomething( $arrUser ); load_something( $category );
すみません、私です。
10. すごく日本語
$toukousuu = 100; $ninzuu = 20; $heikin = $toukousuu / $ninzuu;
これは絶対にやらない。でも他人のソースがこうなっていると嫌がらせかと思います。
$_POST[‘me-ru’] とか書いてあると鳥肌が立ちます。
Similar Posts:
- [PHP]PDOを使ったMySQLデータベースへの接続と基本操作
- [PHP]Luhnアルゴリズムによる番号のチェック
- [PHP]背景の明るさを基準に見やすい文字色を組み合わせる(YUV輝度)
- [JS, jQuery]ページ内に他のページをiframeのように埋め込む
- [PHP]WordPress用のサイトマップを独自に動的生成
- [PHP]Laravelのビューで@includeしているパーツに値を渡す(View Composers)
- [PHP, JS]jQueryのAjaxによるPHP、Javascript間の送受信(JSON)
- [PHP]10進数を任意の文字を使って62進数などのn進数に相互変換する(基数変換)