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カ所にまとめると、メンテナンスも楽になります。