過去ログ/PHPコーディング・ガイドライン(JET SET)のソースを表示
←
過去ログ/PHPコーディング・ガイドライン(JET SET)
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
'''※この記事は [[過去ログ]] に含まれている記事です''' == ファイル構成 == === ファイル名 === クラスはそのクラス名に.class.phpを付けた1ファイルにする。 例:class Memberは、Member.class.phpに入れる。 === ディレクトリとパッケージ === PHPはパッケージ(名前空間)をまだ実現していないので、クラス名などの重複に気を付ける。 Zendの規約では、ディレクトリ構造にあわせて /Hoge/Fuga/AClass.class.phpの場合、クラス名をHoge_Fuga_AClassとかするのが良いということだが、クラス名などが長くなり過ぎてやってられないので無視。 === テストクラス名 === クラスClassNameのユニットテストクラスを書く場合、ClassNameTestとする。テストクラスは、アプリケーションルートの下のtestフォルダ以下に作成する。 例:CustomerクラスならCustomerTest.class.phpを作成 == 命名規則 == PHPのクラス名や変数名は、大文字小文字を区別しないので、その点に注意する。 === ファイル名 === クラス名・インターフェース名は、ファイル名と同じにする。 例:class Memberは、Member.class.phpに入れる。 === クラス名 === Pascal Casing(先頭大文字、以下単語の頭を大文字) 略語は、それ自体を1単語とみなす。つまり、PDFViewerとかではなく、PdfViewer。 実装クラスで、特にInterfaceと区別の必要があれば、最後にImplを付ける。 例: class SomeEntity, class SomeInterestServiceImpl === インターフェース名 === 基本的にクラスと同じ。クラスと区別する場合頭にIを付ける。 例: interface ISomeInterestService class SomeInterestServiceImpl implements ISomeInterestService === 抽象クラス名 === 抽象クラス名に適当な名前が無いとき、 Abstract から始まりサブクラス名を連想させる名前を付ける。 例: abstract class AbstractBeforeSubClassName === 定数 === 大文字の単語を"_"でつないだもの。 例: const UPPERCASE_WITH_UNDERSCORES = 0; === パブリック・メソッド/プロテクテッド・メソッド/関数名 === Camel Casing(先頭小文字、以下単語の頭を大文字) 略語は、それ自体を1単語とみなす。つまり、ID, DBとかではなく、Id, Db。 例 : public function getId() === プライヴェート・メソッド名 === Camel Casingで、先頭に"_" 例 : private function _getDateOfBirth() === パブリック・フィールド/プロテクテッド・フィールド === 基本的に使わない。 Camel Casing(先頭小文字、以下単語の頭を大文字) 例 : public $firstName === プライヴェート・フィールド名 === Camel Casingで、先頭に"_" 例 : private $_dateOfBirth === ローカル変数名 === Camel Casing。 例 : $priceTotal === boolean値を返すメソッド === is + 形容詞、can + 動詞、has + 過去分詞、三単元動詞、三単元動詞 + 名詞。 良い例: isEmpty() canGet() hasChanged() contains(x) containsKey(key) 悪い例: empty() //「空にする」という動詞的な意味に取れる。 checkXXX() // trueがどちらの意味か分かりづらい。 === boolean型変数 === 形容詞、is + 形容詞、can + 動詞、has + 過去分詞、三単元動詞、三単元動詞 + 名詞。 $isEmpty $dirty $containsMoreElements === ループカウンタ === スコープが狭いループカウンタに $i, $j, $k という名前をこの順に使う。 正し、ループが数行以上に渡る場合、意味的に分かりやすい変数名を使用する 例: foreach ($members as $memberIndex) { //...何かの処理 foreach ($addresses as $addressIndex) { //...何かの処理 } } === 変数名一般 === 変数名から役割が読み取れる名前を付ける。 意味不明な短い変数や頭文字の略を使う位なら、20文字位ある変数の方が良い。 感じとしては、$numberOfPeopleOnTheUsOlympicTeamとか$maximumNumberOFPointsInModernOlympicsは長すぎだけど、$teamMemberCountや$teamPointsMaxはいい感じ、とか。 また、意味を持たない$temp, $data, $str, $bufなどは使わないようにする。 悪い例: $data, $inputRec, function copy($s1, $s2) 良い例: $staff, $employeeData, function copy($source, $destination) スコープが狭い変数名は、型名を略したものを使って良い。 例: DataSet ds = new DataSet() == その他 == === インデント === インデントは、ソフトタブ(2タブ)。 === メソッド/フィールドの宣言 === public, protected, private、とスコープを明示的に指定する。 === フィールド === クラスのフィールドはpublicにしない。必要なフィールドに対してget, setメソッドを作ってアクセスする。 === ローカル変数の再利用は悪 === ローカル変数を使い回しするより、新しいものを宣言して初期化する。 悪い例: (ある関数の中での処理) for ($i = 0; $i < $n; $i++) { //iを使う } for ($i = 0; $i < $n; $i++) { //またiを使う } $i = $n - $delta * 2; // またまた再利用 良い例: for ($i = 0; $i < $n; $i++) { //iを使う } for ($j = 0; $j < $n; $j++) { //jを使う } $total = $n - $delta * 2; //別の意味のある変数名 === if/while 条件中の "=" === if, while の条件の中では、代入を行わない。バグの元。 == 更新履歴 == * written by Eishi Kuroda(2006-10-16) * arranged by Ippei Suzuki(2009-11-20) == 参考 == * [http://framework.zend.com/manual/ja/coding-standard.html Zend Framework PHP 標準コーディング規約] * [http://pear.php.net/manual/en/standards.php PEAR Coding Standards] * [http://phpdoc.org/ phpDocumentor] * [http://www.objectclub.jp/community/codingstandard/ オブジェクト倶楽部 コーディング規約の会]
過去ログ/PHPコーディング・ガイドライン(JET SET)
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報