PHPでプログラムを作っていくと
「変数名はどうしよう?」
などと、たいしたことではないのに凄く悩むときがあります。
PearとZend Frameworkには標準コーティング規約というものがあります。プログラムを書く上でのルール決めです。いずれも内容的には一致しているところも多く大変勉強になります。
ただ、かなり細かく書いてあるので全てを網羅するには結構大変です。下記にそれぞれのコーティング規約を1つにまとめてみました。
- ファイル
- 一行の長さは80文字以内とする。最高でも120文字いないとする
- 改行はラインフィード( LF )を使用する
- ファイル名は英数字、アンダーバー( _ )、ダッシュ( – )以外は使用しない
- インデント
- インデントはタブを使用しないで半角空白4文字とする
- 制御構造
- if, for, while, switch等で制御キーワード(if等)と括弧の間は1文字開ける
- if等の一行コードでも波括弧( { )をつける
- 開始の波括弧( { )は条件文と同じ行に明記する
- 終了の波括弧( } )は常に改行し、単独で表記する( else等は除く)
- elseifは使用しないelse ifを使用する
- switchでbreakやreturnを使用しない場合は” // break intentionally omitted “のコメントをつける
- コメント
- コメントにシャープ( # )を使用しない
- コード
- グローバル関数はできるだけ使用しない
- 関数呼び出し時は下記の場所に空白をあけない
- 関数と括弧の間
- 括弧と最初に引数の間
- 最後の引数と閉じ括弧の間
- 閉じ括弧とセミコロンの間
- 関数の引数でカンマと引数の間は空白を空ける
- 関数代入前のイコール( = )の前後に空白を入れる
- 関連する関数代入時はイコール( = )の前に空白を入れてイコールの位置を合わせる
- 関数宣言の中身はインデント(one true brace)を行う
- 関数宣言の引数でデフォルト値がある場合は最後に配置する
- (クラス)ファイルを無条件で読み込む時はrequire_once()を使用する
- (クラス)ファイルを条件付で読み込む時はinclude_once()を使用する
- 文字列はシングルクォーテーション( ‘ )を基本とし、アポストロフィ()がある場合はダブルクォーテーション( ” ) で囲み、 アポストロフィをシングルクォーテーションで囲む($sql = “SELECT `id`, `name` from `people` WHERE `name`=’Fred’ OR `name`=’Susan'”; 等)
- 変数の展開は以下の2通りとする
- $greeting = “こんにちは $name さん。ようこそ!”;
- $greeting = “こんにちは {$name} さん。ようこそ!”;
- 文字列の連結で使用する”.”の前後は空白を入れる
- 文字列の連結を複数行で使用する場合は”.”を”=”と同じ位置にする
- 配列のカンマ( , )の後ろは空白を入れる
- 連想配列を複数行にするときは”=>”の位置を合わせ”=>”の前に空白を入れる
- クラス、関数開始の波括弧はクラス名の下に書く
- クラスのメンバー変数でvarは使用しない。private、protected、publicを使用する
- 関数の戻り値は括弧でくくらない
- タグ
- <? ?>のPHPタグは使用しないで<?php ?>を使用する
- <?php ?>のPHPタグの後ろは空白を1つ入れる。
- 命名規則
- クラス、関数名はできるだけ略語を使用しない
- クラス名は常に大文字で開始する
- クラス内だけで使用する関数は先頭にアンダーバー( _ )をつける( _sort() 等)
- クラスファイルのパス区切りにアンダーバー( _ )を使用する(Zend/Db/Table.php → Zend_Db_Table)
- クラス名が複数の場合は大文字、小文字を使用してアンダーバー( _ )で区切る( NG:Zend_PDF OK:Zend_Pdf )
- 変数、関数、メソッドの命名は小文字、大文字と小文字で構成し、先頭にはパッケージ名を明記する( getData等)
- 関数名にはアンダーバー( _ )を使用しない
- protectedメンバーのときはアンダーバー( _ )はつけない(Pearの命名規則とZend Frameworkの命名規則とでは異なります)
- 定数は全て大文字とし、区切りはアンダーバー( _ )を使用する
- グローバル変数は先頭にアンダーバー( _ )をつける
- 変数名は英数字のみとし、アンダーバー( _ )は使用しない
- 20行以上のループの場合は変数名を”$i”や”$k”のように省略形を使用しない
もし、おかしな所があればご指摘ください。
【参考】
Pingback: あにちょのwebノート » PHP標準コーディング規約
Pingback: まちゅ子のもっそり日記 Ver.2 - wp 基本的なループの記述