3.コーディングスタイル

見やすいプログラムかどうかは、コーディングスタイルで決まります。
メンテナンス性向上のためにも全員が守れるようにしましょう。

代入

  • 変数に値を導入する際には、変数名とイコール、イコールと値の間には必ず空白を入れなければならない。通常は半角空白を1つとする。ただし、可読性向上のための複数の空白であれば、入れることを推奨。
  • 計算式を代入する場合などは、各要素の間に空白を入れる

代入の例
$total = 1 + 2;                //良い例
  
$total = $value1 + $value2;    //良い例
   
$total = (1 + 2) * 2;          //良い例

$total=1+2;                    //悪い例

$total = $value1+$value2;     //悪い例

$total = ( 1 + 2 ) * 2;       //悪い例

複数行の代入を揃える例
//良い例(下に合わせるため空白を入れた)
$name    = '山田太郎';
$address = '東京都港区';

//悪い例(イコールがずれ、見にくくなる)
$name = '山田太郎';
$address = '東京都港区';


文字列

  • 文字列はリテラル(変数の展開などが含まれない)か否かに関わらず、「シングルクォート(')」で囲まなければならない
  • 文字列中に改行を入れたい場合は、改行部分のみ「ダブルクォート(")」で囲み、「ドット(.)」で連結する
  • 文字列の連結には「ドット(.)」を使用し、ドットの前後には常に空白を入れなければならない。複数行になる場合、二行目以降の変数名記述は不可。ドットを一行目のイコールと同じ位置にして連結する。
  • 配列が改行で長くなる場合は、複数行の記述でも構わないが、二行目以降の開始位置は、array()の後ろに合わせる

リテラル:最もシンプルな例。「シングルクォート」で囲む
$greeting = 'こんにちは。';  //良い例
$greeting = "こんにちは。";  //ダブルクォートは使わない

文字列の連結:文字列の連結には「ドット(.)」を使用。ドットの前後には常に空白を入れなければならない
$greeting = 'こんにちは。' . '今日はいい天気ですね。';
連結が長くなる場合:複数行の記述でも構わないが、二行目以降の変数名の記述は不可。二行目以降のドットは一行目のイコールと同じ位置にする
//良い例
$greeting = 'こんにちは。今日はいい天気ですね'
           . 'でも夕方から雨が降るそうですよ';

//悪い例 変数名を複数回記述することで混乱の元になる恐れがある
$greeting  =  'こんにちは。今日はいい天気ですね';
$greeting .=  'でも夕方から雨が降るそうですよ'; 

変数の展開:文字列中に変数を入れたい場合は、文字列の連結を使用。「ダブルクォート」を使用してはいけない
$greeting = 'こんにちは、' . $name . 'さん。';   //良い例
$greeting = 'こんにちは、 $name . 'さん。';      //悪い例
$greeting = 'こんにちは、{$name}さん。';         //悪い例

改行の使用:文字列中に改行を入れたい場合は、改行部分のみ「ダブルクォート」で囲み、連結する
//良い例
$greeting = 'こんにちは。' . "\n" . '今日はいい天気ですね。';
 
//悪い例 改行が分かりにくい
$greeting = "こんにちは。\n今日はいい天気ですね。";

配列が改行で長くなる場合:複数行の記述でも構わないが、二行目以降の開始位置は、array()の後ろに合わせる
//良い例
$myArray = array(1, 2, 3, 'Zend', 'Framework',
                 $value1, $value2, $value3,
                 100, 200, 300);

//悪い例 区切りのカンマを行頭に書いてはいけない
$myArray = array(1, 2, 3, 'Zend', 'Framework'
                 , $value1, $value2, $value3
                 , 100, 200, 300);

配列

通常配列
  • 配列の添字に負の数を使用してはならない
  • 特別な理由が無い限り0から始める
  • array()を使用して数値添字の配列を宣言する場合は、要素を区切るカンマの後に空白を入れなければならない

通常配列の例
//良い例
$myArray = array(1, 2, 3, 'Zend', 'Framework');

//悪い例 要素を区切るカンマの後に空白がない
$myArray = array(1,2,3,'Zend','Framework');

//悪い例 カッコ内の前後に空白を入れてはいけない
$myArray = array( 1, 2, 3, 'Zend', 'Framework' );

連想配列
  • 連想配列をarray()で宣言する場合、1要素につき改行を入れなければならない
  • 各要素の開始位置は揃えて記述する

連想配列の例
$myArray = array('firstKey' => 'firstValue',
                 'secondKey'=> 'secondValue');

要素が多い場合:終了のカッコをarrayの先頭に合わせる
$myArray = array( 'firstKey'  =>  'firstValue',
                  'secondKey' =>  'secondValue'
                  'thirdKey'  =>  'thirdValue'
                  'fourthKey' =>  'fourthValue'
                  'fifthKey'  =>  'fifthValue'
             );

条件分岐(if/else/else if)

  • 条件を指定するカッコ前およびカッコを閉じた後に、それぞれ空白を入れなければならない
  • 条件文の中では演算子の前後にも空白を入れる
  • 条件分岐開始の中カッコ({)は条件文と同じ行に書き、終了の中カッコ({)は改行して書かなければならない
  • 中カッコ内では「半角空白4文字分の字下げ」を行う
  • 「elseif」は使用しない。「else if」(「else」と「if」の間に空白を入れる)を使用する

条件が一つの場合
//良い例
if ($age < 20) {
    echo '未成年です。';
}

//悪い例 (条件を指定するカッコ前およびカッコを閉じた後のそれぞれ空白や演算子前後の空白が無い)
if($age<20){
   echo '未成年です。';
}

//悪い例 (演算子前後の空白が無い)
if ($age<20) {
   echo '未成年です。';
}

//悪い例 (条件を指定するカッコ前およびカッコを閉じた前にも空白を入れてしまっている)
if ( $age < 20 ) {
   echo '未成年です。';
}

//悪い例 (改行がない)
if ($age < 20) { echo '未成年です。'; }

//悪い例 (改行位置が違う)
if ($age < 20) 
{
    echo '未成年です。';
}

条件分岐が続く例
//良い例
if ($age < 20) {
     echo '未成年です。';
} else if ($age < 30) {
     echo '20代です。';
} else {
     echo '30代です。';
}

//悪い例 (elseifは使わない)
if ($age < 20) {
     echo '未成年です。';
} elseif ($age < 30) {
     echo '20代です。';
} else {
     echo '30代です。';
}

選択分岐(switch)

  • 条件を指定するカッコ前およびカッコを閉じた後に、それぞれ空白を入れなければならない
  • switchの中は「半角空白4文字分の字下げ」を行い、さらにcaseの中は「半角空白4文字分の字下げ」を行う
  • 開始の中カッコ({)はswitchと同行に書き、終了の中カッコ(})は改行して書かなければならない
  • defaultは決して省略してはならない

switchの例
//良い例
switch ($weather) {
   case 'fine':
         echo 'いい天気ですよ!';
         break;

   case 'cloudy':
         echo 'ちょっと曇ってますね。':
         break;
 
   case 'rainy':
         echo '傘は必須です。':
         break;

     default:             //何もなくても省略してはいけない
           break;
}

//悪い例(空白行がないと見にくい)
switch ($weather) {
     case 'fine':
         echo 'いい天気ですよ!';
         break;
   case 'cloudy':
         echo 'ちょっと曇ってますね。':
         break;
   case 'rainy':
         echo '傘は必須です。':
         break;
      default:             //何もなくても省略してはいけない
           break;
}

//悪い例 (defaultは省略不可)
switch ($weather) {
   case 'fine':
         echo 'いい天気ですよ!';
         break;

   case 'cloudy':
         echo 'ちょっと曇ってますね。':
         break;
 
   case 'rainy':
         echo '傘は必須です。':
         break;

}

//悪い例(caseの中はインデントが必要)
switch ($weather) {
   case 'fine':
   echo 'いい天気ですよ!';
   break;

   case 'cloudy':
   echo 'ちょっと曇ってますね。':
   break;
 (後略)    

//悪い例 (case自体もインデントが必要)
switch ($weather) {
case 'fine':
   echo 'いい天気ですよ!';
   break;

case 'cloudy':
   echo 'ちょっと曇ってますね。':
   break;
 (後略)    

//悪い例 (開始の中カッコは switch と同行に書く)
switch ($weather)
{
    case 'fine':
        echo 'いい天気ですよ!';
        break;

 (後略)    

//悪い例 (カッコの前とカッコ終了の後には空白が必要)
switch($weather){
    case 'fine':
        echo 'いい天気ですよ!';
        break;

 (後略)    

//悪い例 (カッコの中は空白禁止)
switch ( $weather ) {
    case 'fine':
        echo 'いい天気ですよ!';
        break;

 (後略)


繰り返し(while)

  • 条件を指定するカッコ前およびカッコを閉じた後に、それぞれ空白を入れなければならない
  • whileの中は「半角空白4文字分の字下げ」を行う
  • 開始の中カッコ({)は、whileと同じ行に書き、終了の中カッコ(})は改行して書かなければならない

whileの例
// 良い例
while ($i < 10) {
    echo $i . '回目の出力です。';
    $i++;
}

//悪い例(まったく空白が入っていない)
while($i<10){
    echo $i . '回目の出力です';
    $i++;
}

//悪い例(カッコ内に演算子の前後には空白が必要)
while ($i<10) {
    echo $i . '回目の出力です';
    $i++;
} 

//悪い例(カッコの中は空白禁止)
while ( $i < 10 ) {
    echo $i . '回目の出力です';
    $i++;
} 

//悪い例(中カッコの開始はwhileと同行にしなければならない)
while ($i < 10)
{
    echo $i . '回目の出力です';
    $i++;
}


繰り返し(for)

  • 条件式を指定するカッコ前およびカッコを閉じた後に、それぞれ空白を入れなければならない
  • forの中は「半角空白4文字分の字下げ」を行う
  • 開始の中カッコ({)はforと同じ行に書き、終了の中カッコ(})は改行して書かなければならない
  • 条件式の各要素のセミコロン(;)の後には空白を入れる
  • 条件式の各要素に演算子が入っている場合は、その前後に空白を入れなければならない

forの例
//良い例
for ($i = 0; $i < 10; $i++) {
     echo $i . '回目の出力です。';
}

//悪い例(条件式の演算子の前後やセミコロンの後に空白を入れなければならない)
for ($i=0;$i<10;$i++) {
     echo $i . '回目の出力です。';
}

//悪い例(条件式の前後に空白を入れてはいけない)
for ( $i = 0; $i < 10; $i++ ) {
     echo $i . '回目の出力です。';
}

//悪い例(中カッコの開始は while と同行にする)
for ( $i = 0; $i < 10; $i++ )
{
     echo $i . '回目の出力です。';
}

  • for文は配列の要素数分ループさせるなどで利用する事が多いですが、配列の要素数の取得を条件式に入れてはなりません。これは、ループするたびに配列の要素数を取得する処理が実行されてしまうからです

条件式では関数を呼び出してはならない
// 良い例
$cnt = count($data);
for ($i = 0; $i < $cnt; $i++) {
     echo $data[$i];
}

//悪い例(条件式内で関数呼び出しをしてはいけない)
for ($i = 0; $i < count($data); $i++) {
     echo $data[$i];
}

関数の使用
  • 関数名とカッコの間に空白は入れてはならない
  • 引数が複数ある場合は、引数の区切りのカンマの後に空白を入れる

関数の例1
//良い例
$outData = htmlspecialchars($message);

//悪い例(関数とカッコの間に空白を入れてはならない)
$outData = htmlspecialchars ($message);

//悪い例(引数のカッコ内に空白を入れてはいけない)
$outData = htmlspecialchars( $message );

関数の例2
//良い例
$aList = explode('-', $tel);

//悪い例(関数とカッコの間に空白を入れてはならない)
$aList = explode('-', $tel);

//悪い例(引数と引数の間には空白が必要)
$aList = explode('-',$tel);

//悪い例(引数のカッコ内に空白を入れてはいけない)
$aList = explode( '-', $tel );

関数の宣言

  • 関数を宣言する場合は、関数内とカッコの間に空白を入れてはいけない
  • 引数が複数ある場合は、引数の区切りのカンマの後に空白を入れる
  • 関数の中は「半角空白4文字分の字下げ」を行う
  • 開始の中カッコ({)は関数名と同じ行に書き、終了の中カッコ(})は改行して書く

関数の宣言の例
//良い例
function myFunc($param1, $param2) {
    $total = $param1 + $param2;
    return $param;
}

//悪い例(関数内は半角空白4文字分の字下げが必要)
function myFunc($param1, $param2) {
$total = $param1 + $param2;
return $param;
}

//悪い例(引数の間に空白がない、引数の同じカッコの後に空白がない)
function myFunc($param1,$param2){
    $total = $param1 + $param2;
    return $param;
}

//悪い例(関数名の後に空白をいれてはいけない)
function myFunc ($param1, $param2) {
    $total = $param1 + $param2;
    return $param;
}

//悪い例(中カッコの開始は関数名と同行でなければならない)
function myFunc($param1, $param2)
{
    $total = $param1 + $param2;
    return $param;
} 

//悪い例(return する値をカッコで囲んではいけない)
function myFunc($param1, $param2) {
    $total = $param1 + $param2;
    return ($param);
}

クラスの宣言

  • クラスの宣言の開始の中カッコはクラス名の下に書かなければならない(one true brace形式)
  • 終了の中カッコ(})は改行して書く
  • クラス内は全て「半角空白4文字分の字下げ」を行う

クラスの宣言の例
//良い例
class MyClass
{
    //クラス内は半角空白4文字分の字下げが必要
}

クラスのメンバー変数の宣言

  • クラス内で宣言される全てのメンバー変数は、クラス開始の中カッコの事業にまとめて書かなければならない
  • メンバー変数は適切なアクセス権限(「private」「public」「protected」)で宣言する

!!基本は「private」です。外部からメンバー変数に代入させたい場合は「public」にして直接代入するのではなく、アクセサ(set/get)を使用してください。

クラスのメンバー関数宣言の例
//良い例
class MyClass
{
   private   $_variable1;    //良い例
    public    $_variable2;    //良い例
    protected $_variable3;    //良い例
    var       $variable3;     //エラーにはならないが悪い例
}

クラスのメンバー関数の宣言

  • クラスのメンバー関数宣言の開始の中カッコ({)はメンバー関数名の下に書かなければならない(one true brace形式)
  • 終了の中カッコ(})は改行して書く
  • メンバー関数内は全て「半角空白4文字分字下げ」を行う
  • メンバー関数名と引数の開始カッコの間に空白は入れてはいけない

クラスの宣言の例
//良い例
class MyClass
{
      private function myFunc($param1, $param2)
      {
          $total = $param1 + $param2;
          return $param;
      }
}


コメント

  • コメント記号の後に必ず空白を入れなければならない
  • 複数行コメントの場合はコメント開始記号の行と終了記号の行には他の文字を書いてはならない

コメントの例
//一行コメント  ←良い例
//一行コメント  ←悪い例

//良い例
/*
 これは
 複数行コメントです
*/

// 悪い例
/* これは
    複数行コメントです。 */

// 悪い例
/*これは複数行コメントです。*/

プログラム中のSQL文の記述

  • SQL文内にシングルクォートが含まれるためシングルクォートではなくダブルクォートで囲む
  • SQL構文や関数は、大文字で記述する
  • 可読性を良くする為、適切にインデントを行う
  • プレースホルダを使う場合はmシングルクォートで囲む

SQL文の例
//良い例
$sql = "SELECT "
     .      "id, "
     .      "name "
     ."FROM "
     .      "m_user "
     ."WHERE "
     .      "group = '開発部'";

//良い例 (プレースホルダを使う場合)
$sql = 'SELECT '
     .      'id, '
     .      'name '
     .'FROM '
     .      'm_user '
     .'WHERE '
     .      'group = ?';

//悪い例(1行で書いている)
$sql = "SELECT id, name FROM m_user WHERE group = '開発部'";

//悪い例(SQL構文を小文字で書いている)
$sql = "select "
     .      "id, "
     .      "name "
     ."from "
     .      "m_user "
     ."where "
     .      "group = '開発部'";

//悪い例(カンマを頭に持ってきている)
$sql = "SELECT "
     .      "id "
     .      ",name "
     ."FROM "
     .      "m_user "
     ."WHERE "
     .      "group = '開発部'";

//悪い例(インデントしていない)
$sql = "SELECT "
     . "id, "
     . "name "
     . "FROM "
     . "m_user "
     . "WHERE "
     . "group = '開発部'";

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2008年06月03日 16:23
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。