コーディング規約の10のポイント

さて今回はコーディングの仕方についてご紹介します。
それぞれ書き方というものがあると思いますが、私個人的にはZendFramworkの規約に基づいた形に作成しています。
なぜかといいますと、PHP開発者の会社がZendなんです。PHPもZendが作っているようなものなのでその開発者の規約に基づいて利用しているわけなんですね。

だからある程度きれいで見やすいコーディングが行えるのではないでしょうか?
この規約は構文規則ではないので各自の判断にお任せします。


スポンサーリンク


はじめは独自に記述しておりましてZendFrameworkの規約?めんどうだよ~って思っておりましたが、結局Zendの規約に準ずる形になってきていますね。
最近は意識して変えております。プラスしてCakePHPの規約も取り入れた形になっています。

規約1.PHPコードのみの場合は終了ダグは不要

これはどういうことかといいますと、PHPは最初と最後に「<?」とはじまって?>と終わりますよね。最後の「?>」を省略しなさいということなんです。
もちろんHTMLタグの中に書いてある場合は別ですよ。すべてPHPコードだけの場合に限ります。なぜ省略するのかと言いますと最後の終了タグの後にスペースなどの空白分が入っていたりしたら出力や場合によってはエラーなどの影響があるんですね。だから省略してくださいということなんですね。あとショートタグは非推奨です。

php.iniでshort_open_tag = OnにするとというよりデフォルトでOnになってますね。<?= $name ?>は<?php echo $name;?>と同じ扱いになるので簡単で便利なんですが最近はあまり見かけなくなりました。不具合が起こることが多いのでやめましょう。

規約2.字下げ

字下げは空白4文字。タブ文字を使ってはいけません、となっていますが、私は4文字空白タブを使っています。タブのほうが作業しやすいので。

規約3.行の長さ

80文字までで最大120文字となっていますが、基本メール書く時と同じ感覚で作業していますので80文字を目安にするといいでしょう。

規約4.命名規約

クラス名

Zendではアンダースコア記法(キャメル記法もプラスされた書き方)で書かれていますが、私はキャメル記法を用いています。
アンダースコア記法は文字通り連結部分をアンダースコアでつなげる書き方を言います。例:html_tag,php_cording,under_score
そしてキャメル記法というのは2パターンあってHtmlTagという風に単語ごとに大文字を使って記述します。(アッパーキャメル)
もうひとつはhtmlTagという風に最初の単語を小文字にする方法です。(ローワーキャメル)

このあたりの命名規則はCakePHPを参考にしています。

関数およびメソッド

ここもキャメル記法を用いていますが、先頭の文字は小文字にしています。
Zend規約とも同じ内容ですね。数字の利用は非推奨です。

htmlTag()
getElementById()
変数

変数も関数やメソッドと同じにしていますがアンダースコアをつけることもありますね。Zend規約の場合はクラス内の変数名private/protectedは最初にアンダースコアをつけます。
例:$_htmlTag
publicはキャメル記法で関数やメソッドと同じ最初が小文字ですね。

定数

定数名は、常にすべて大文字にします。区切りはアンダースコアを利用しています。
この定数はほとんどの方が同じにしていると思いますね。

HTML_TAG
ZEND_FRAMEWORK

規約5.文字列出力

変数の展開などが含まない文字列などを出力したり変数に入れる場合は「シングルクォート」を利用しています。
例:$a = ‘文字列の例’;
習い始めはほとんど全部がダブルクオートだけだったんですが、最近は用途に応じて使い分けております。
上記の場合はダブルクオートでも同じですね。主にダブルクオートを使うときはSQL文を利用するときに使います。あとは変数を展開するときかな。
例:echo “こんにちは {$name} さん!”;

文字列の連結には “.”(ドット)を使用するのですが、わかりやすくするため前後半角スペースを入れるといいでしょう。このあたりかなりマチマチにやっていましたね。
例:echo ‘こんにちは’ . $name . ‘さん!’;
因みに変数展開するよりも連結子を使ったほうが処理は若干ですが速いです。

規約6.配列

配列に限らないですが、カンマの後はスペースを入れます。配列が多い場合は改行して見やすくしておきましょう。

$htmlTag = array('iframe', 'div', 'list', 'p');
$htmlTag = array(1 => 'header',
                     2 => 'section',
                     3 => 'article',
                     4 => 'nav',
                     5 => 'aside',
                     6 => 'footer',
                    );

因みに配列の最後にカンマを入れておくと要素を追加したときにエラーが発生する危険性を少なくできるので入れておきましょう。

規約7.ドキュメントブロック

クラスや関数などの説明文ですね。入れておくと後々わかりやすくて便利ですので記述しておきましょう。他の人がかまってもわかるようにしておくような意識があるといいですね。

/**
* これがドキュメントブロックです
* これがドキュメントブロックです
* これがドキュメントブロックです
* これがドキュメントブロックです
*/

規約8.制御構造

if/else/elseif

if文の書き方は空白を入れて見やすくします。
ifの後にスペースを入れて条件文、そのあとスペースを入れて大カッコ、改行してタブ
という風にしております。else ifはスペースを開けています。
前回の記事にも書きましたが:(コロン)を使うタイプではエラーになりますのでelseifはつなげて書きましょう。

if ($a === 2) {
    echo '正解です!';
}

if ($a === 2) {
  echo '正解です!';
} else {
    echo '間違いです!';
}
Switch

switch文もif文同様な書き方です。

switch ($htmlTag) {
    case 1:
        echo 'address'
        break;

    case 2:
        echo 'pre'
        break;

    default:
        echo 'blockquote'
        break;
}

defaultの省略は非推奨です。

規約10.ファイル名

ファイル名で使用する文字は英数字アンダースコアのみ。
アンダースコア記法でファイルの名前を保存します。必ずアンダースコアを使っているわけではないので臨機応変に使っております。

例:html_tag.php

ファイルの先頭にはドキュメントブロックを記述しましょう。

/**
* ファイルのタイトル
*
* ファイルの説明
*
* @package パッケージ名
* @author 著作者 <著作者メール>
* @since PHP 5.2
* @version $Id: sample.php, ver 2.15 2012/01/27 17:15:23 $
* @license http://test.sample.com/license   MIT License
* @copyright  Copyright (c) 2008-2012 sample Technologies Inc.
*/

以上です。フレームワークを利用して開発する場合は必ず各フレームワークの規約にしてがって記述してください。動かないので。
一応自分でも確認用として残しておきます。

1件のコメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です