Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

Five good programming habits in PHP

via. http://www.ibm.com/developerworks/opensource/library/os-php-5goodhabits/index.html

PHPに限った話」というわけではないですが、5つほど挙げられてます。以下、ざっと要点をまとめてみました。

Use good naming(良い名前を付ける)

変数や関数/クラス/メソッド名の話です。ちゃんと意味のある名前を付けた方がコードを読みやすいよ、とか、マジックナンバーを定数化して読みやすくするという話。
挙げられている使用前のコードは次のとおり。使用後のコードはhttp://www.ibm.com/developerworks/opensource/library/os-php-5goodhabits/index.htmlをどうぞ。

<?php
function getNBDay($d)
{
    switch($d) {
        case 5:
        case 6:
        case 7:
            return 1;
        default:
            return ($d + 1);
    }
}

$day = 5;

$nextDay = getNBDay($day);

echo ("Next day is: " . $nextDay . "\n");
?>

Take smaller bites(意味のある単位に分けて1つ1つを小さく)

数百行以上の関数とかメソッドを目にすると、それ以上コードを追いたくなくなりますが、そういった話です。
大きなロジックは意味のある単位に分けて、1つ1つを小さくした方が管理しやすくなります。

Document your code(コメントを書こう)

クラスや関数のコメントはちゃんと書きましょう、という話。まあ、書いておくとphpdocumentorでAPIドキュメントを作れますしね。
とはいえ、個人的には「モノにも寄る」かなぁ、という感じです。

Handle error conditions(エラー処理やってる?)

「堅いアプリケーション」はエラー処理/バリデーションとロジックのコードが80:20ルールに従うぐらいになるそうですが、エラー処理はちゃんとやりましょう「Programming defensively」という言葉を使ってます。
挙げられている使用前のコードは次のとおりですが、いくらでもNoticeが出そうです。PEARによくあるなぁ。。。

<?php

// Get the actual name of the 
function convertDayOfWeekToName($day)
{
    $dayNames = array(
    "Sunday",
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday");
    return $dayNames[$day];
}

echo("The name of the 0 day is:  " . convertDayOfWeekToName(0) . "\n");
echo("The name of the 10 day is:  " . convertDayOfWeekToName(10) . "\n");
echo("The name of the 'orange' day is:  " . convertDayOfWeekToName('orange') . "\n");

?>

使用後のコードは例外を使っています。http://www.ibm.com/developerworks/opensource/library/os-php-5goodhabits/index.htmlをどうぞ。

Never, ever, copy and paste(コピペ厳禁)

似たようなコードはコピペしないで、共通関数に切り出し、パラメータで挙動を変えよう、という話。1カ所にまとめると、メンテナンスも楽になります。