※ パクレゼルヴではWeb開発エンジニアを大募集中!詳細はこちら
Home > PHP > コーディングルール

コーディングルール  

2010/6/8 火曜日 17:35:14

皆さん、コードを書くときコーディングルールを気にしますか?
自分は気にしてませんダメな人ですね。

ということで、好きなフレームワークCodeIgniterの例にならって、まとめ的に書きとめようと思う。

◆クラス名・メソッド名
クラス名は常に最初の文字を大文字にしなければいけません。コンストラクタメソッドはクラス名と同じにします。
メソッド名は、すべて小文字にして動詞など含めてわかり易い名前にするべきです。

間違い:
class superclass
class SuperClass

正しい:
class Super_class

間違ったメソッド名と正しいメソッド名

間違い:
function fileproperties()		// 表現がわかりにくく、アンダースコアが抜けている
function fileProperties()		// 表現がわかりにくく、キャメルケースが使われている
function getfileproperties()		// ベター! しかしながら可読性に欠ける
function getFileProperties()		// キャメルケースが使われている
function get_the_file_properties_from_the_file()	// 長過ぎる

正しい:
function get_file_properties()	// 説明的、アンダースコア、全て小文字

◆変数名
変数名はクラス名とほぼ同じ。「$p」とか単語になっていないものはループ変数のみにつかいます。

◆定数
定数は変数とほぼ同じ。だけど、例外として大文字のみを使用します。

◆TRUE、FALSE、NULL
常に大文字を使用します。

◆論理演算子
「||」は解像度の低いデバイスでは良く見えなく「11」に見えてしまうことがあることから「OR」を使用する。

間違い:
if ($foo || $bar)
if ($foo AND $bar)  // 問題無いがアプリのシンタックスハイライト機能にはお勧めできない
if (!$foo)
if (! is_array($foo))

正しい:
if ($foo OR $bar)
if ($foo && $bar) // 推奨
if ( ! $foo)
if ( ! is_array($foo))

◆インデント
Allman スタイルのインデントを利用します。クラス宣言を除いて、括弧は常に1行に単独で配置し、その制御ステートメントと同じ深さにインデントします。

間違い:
function foo($bar) {
	// ...
}

foreach ($arr as $key => $val) {
	// ...
}

正しい:
function foo($bar)
{
	// ...
}

foreach ($arr as $key => $val)
{
	// ...
}

◆括弧の前後のスペース
一般的に、括弧の前後にはスペースを追加すべきではありません。
例外として、括弧内に引数を記述する PHP 制御構造(if,switch,for,while等)では、関数と区別しやすくしたり可読性を高めるために、常にスペースを配置すべきです。

間違い:
$arr[ $foo ] = 'foo';

正しい:
$arr[$foo] = 'foo'; // 配列のキーの前後には空白を入れません

間違い:
function foo ( $bar )
{

}

正しい:
function foo($bar) // 関数定義の括弧の前後には空白を入れません
{

}

間違い:
foreach( $query->result() as $row )

正しい:
foreach ($query->result() as $row) // PHPの制御構造の後ろには空白を1つ入れますが、中の括弧には入れません

◆PHPエラー
コードはエラーを起こさず、潜在的なWARNINGやNOTICEもなく動作するようにしましょう。
例えば、最初にisset()で確かめずに($_POST配列のキーのような)未定義の変数を使わないようにしてください。

あくまでチラシの裏ですので、人それぞれのコーディングルールなので、特に決まりごとが無ければやりやすい方法でやるべきかとー。

下音タヌキ PHP

  1. No comments yet.
  1. No trackbacks yet.