・コーディング規約を守る。組織にコーディング規約がないなら、Zend Framework PHP標準コーディング規約 [zend.com]を使う。オレ流コーディングスタイルは禁止。
・内部コードにはEUC-JPかUTF-8を使う。入出力もできるだけShift JISを避ける。Shift JISを使う場合には2byte目に0x5Cを含む文字の動作を忘れずに確認する。
・開発環境の警告レベルをE_STRICTにする。本番環境ではdisplay_errorsをオフにする。
register_globals、magic_quotesはオフにする。
・type hintingを積極的に使う。
・スコープの長い配列をクラスでラップする。
・プレゼンテーションとロジックを分割すること。プレゼンテーションには変数または関数の出力とループ以外のロジックを残さないこと。ロジックの中で直接出力をしないこと。ロジックはSimpleTestを使って単体テストすること。
SQL文に変数を埋め込むときにはプレースホルダを使う(PDOのprepareとbindParams)。
・リクエストから取得したパラメータを出力するときはhtmlspecialcharsを使う。
・関数が長くなったら分割する(composite methodパターンを使おう)。
グローバル変数を使うのは避ける。
・変数を定数として使わない。定数はdefineで定義するか、const宣言する。
・常に最新バージョンでテストできる環境を作り、サービスイン後もバージョンアップに対応するための予算をとっておく(サービスイン後にお金をかけたくないなら、PHPは避けるべき)。
・継承を使うなら、クラス図くらいは書いておく(単にコードを再利用したいだけなら、移譲を検討すること)。
各URLにおけるパラメータとその閾値を文書化すること。パラメータの閾値の境界線についてソースレビューし、テストすること。
・既存のフレームワークを学習することに投資すること(学習コストを嫌って自己流のフレームワークを作ることは、バグを作りこむことになるのでかえってコスト高になる)。
PHPしか使えない作業者の成果物はこまめにレビューすること。
・設計を重視すること。
・コピー&ペーストプログラミングの匂いを発見したら、そのコードを書いた人にプログラミングの基礎を教えること。
リファクタリングの時間をスケジュールに入れること。
・require/includeを条件文や関数宣言の中に記述しないこと。