Tech
Webシステムプログラマーによる、ちょっとためになる(かもしれない)情報共有ブログ
 

【第56回】PHPのコーディング規約について考える

 
普段PHPでプログラムを書いていますが、いろいろなPHPのソースを見ていると・・・。

人によって条件文の中括弧の位置が異なっています。
(その1)

if($str === "a"){

echo("a");

} elseif($str === "b") {

echo("b");

} else {

echo("other");
}

(その2)
if($str === "a")
{
echo("a");
}
elseif($str === "b")
{
echo("b");
}
else
{
echo("other");
}

(その3)
if($str === "a"){

echo("a");

}
elseif($str === "b"){

echo("b");

}
else{

echo("other");

}

if文を書くとき中括弧をどの位置に書くのかは人それぞれです。

ただ、大人数で開発をすることになった場合は、必ずコーディング規約をいうも
のが必要になってきます。

1人1人自由に中括弧の位置を決めると保守が大変です。

PHPのフレームワークのコーディング規約はどうなっているのだろうか。

今日は最近主に使われているPHPフレームワークのコーディング規約を集めてみ
ました。

まずは、ZEND FRAMEWORKです。

★ZEND FRAMEWORK

if文はその1のパターンでした。

if ($a != 2) {
   $a = 2;
} else {
   $a = 7;
}

さらに驚いたのが次のパターン。

if (($a == $b)
   && ($b == $c)
   || (Foo::CONST == $d)
) {
   $a = $d;
}

if文の内容が長くなった時の書き方です。

私の場合
if (($a == $b) && ($b == $c) || (Foo::CONST == $d)) {
   $a = $d;
}

という感じでよく書いているのですが、ZENDフレームワークのコーディング規約
によると、複数行にしたほうが後から条件句を追加したり削除したりしたときに
問題が起こりにくくなるからだそうです。

次はCakePHPです。


★CakePHP

最近まで見ることができたのですが、見られなくなってしまいました。。。

ということで・・・こちらですね。

CakePHPは(その1)のパターンです。

<?php
if ((expr_1) || (expr_2)) {
// action_1;
} elseif (!(expr_3) && (expr_4)) {
// action_2;
} else {
// default_action;
}
?>


次はSymfonyです。

★Symfony

function fooFunction()
{
 if (condition2 || condition3)
 {
   statement1;
   statement2;

   return 1;
 }
 else
 {
   defaultaction;
 }

 return null;
}

symfonyはその2パターンです。

最後にCodeIgniterです。

★CodeIgniter

1.6まではコーディングルールはありませんでした。
1.7になって初登場です。

CodeIgniterその2パターンです。

PHPはフレームワークのコーディング規約に合わせて、その1またはその2パ
ターンでプログラムを書いていくといいようです。

その他、function名の命名規則では、Zend,Cake,Symfonyが大文字と小文字を併
用する形に対して、CodeIgniterだけは小文字とアンダースコアの組み合わせに
なっていたり・・・。

さらにCodeIgniterのコーディングルールには、こんな記述も・・・

|| はダメでOR
ANDはダメで&&

確かにわかりやすいですが、個人的にはORとANDか||と&&で統一したほうがと思
うものもあるにはあります。

PHPフレームワークによって、コーディングルールもいろいろありますね。

自分が書いたPHPのソースを改めて考え直すいい機会でした。

おしま~い。

トラックバック(0)

トラックバックURL: http://blog.promob.jp/mt/mt-tb.cgi/290

コメントする