• このページを del.icio.us へ追加
  • このページを含むはてなブックマーク
  • このページをはてなブックマークへ追加

整形に関する規約

インデントにタブは使用しない。

インデントは半角スペース4つ。

括弧付け

K&R Styleで書く。BSD Styleで書かない。

NG
        $name = array
        (
            'tobe',
            'okamoto',
        );

        public function _func()
        {
            return true;
        }
        
OK
        $name = array(
            'tobe',
            'okamoto',
        );

        public function _func() {
            return true;
        }
        

NGのスタイルだとブロック単位で選択しづらい。

関数と繰り返し構文などを区別するため、for(each)やwhileの後ろの()とは半角スペースを空ける。

NG
        while(1) {
            break;
        }
        
OK
        while (1) {
            break;
        }
        

逆に関数呼び出しの後ろの()とはつなげて書く。

NG
        $name = get_name ($id);
        
OK
        $name = get_name($id);
        

2項演算子、3項演算子の前後にはスペースを空ける。

単項演算子の場合はスペースをあけずに詰める。

arrayに並べるときは最後の項目の後ろにも「,」をつける。

並べ替えや、新規要素の追記が容易。

NG
        $names = array(
            'tobe',
            'okamoto'
        );
        
OK
        $names = array(
            'tobe',
            'okamoto',
        );
        

1行の長さは半角78文字以内とする。

1つの行に複数の文を書かない。

NG
        $foo = tobe;$var = 1;
        
OK
        $foo = tobe;
        $var = 1;
        

行コメントはひとつの段落と考えられる。行コメントの前には空行を入れる。

NG
        # 値をセット
        $name = 'tobe';
        # 画面表示
        print $name;
        
OK
        # 値をセット
        $name = 'tobe';

        # 画面表示
        print $name;
        

整列について

前後の演算子などを揃える。

NG
        $name = standardize_name($name);
        $age = time - $birth_date;
        $status = 'active';

        $fruits = array(
            'red' => 'apple',
            'yellow' => 'banana',
            'pink' => 'peach',
        );

        $fruits[red] = 'apple';
        $fruits[yellow] = 'banana';
        $fruits[pink] = 'peach';
        
OK
        $name   = standardize_name($name);
        $age    = time - $birth_date;
        $status = 'active';

        $fruits = array(
            'red'    => 'apple',
            'yellow' => 'banana',
            'pink'   => 'peach',
        );

        $fruits[red   ] = 'apple';
        $fruits[yellow] = 'banana';
        $fruits[pink  ] = 'peach';
        

最後に。

これらの規約を自動化できるのが望ましい。
エディタなどで自動化できるように。(Eclipse, Emacs など)