インデンテーションについての約束事


チームでプログラムを作成する場合、メンバーがプログラムを読み易いように、 インデンテーション(字下げ)に関して一定のルール(約束事)を設ける。

「プログラミング」では、 課題で提出するプログラムのインデンテーションに関して次のような約束事を採用する。 (5番目の約束事以外は、 教科書で採用されている約束事と概ね同じである。)

  1. 原則として、一行には文は一つしか書かない。 ただし、次の例のように密接に関連している文の場合はこの原則にこだわる必要はない。

  2. ブレース({})の中は、外よりも 4 または 8 字分を字下げする。 ただし、首尾一貫した文字数であれば、4 や 8 という数字にこだわる必要はない。(1 字は少なすぎるが …)

    良い悪い悪い
    if (n1 > n2) {
        max = n1;
        min = n2;
    } 
    
    if (n1 > n2) {
    max = n1;
    min = n2;
    } 
    
    if (n1 > n2) {
        max = n1;
            min = n2;
    } 
    
  3. タブ文字を使わずに空白文字だけで字下げする。 あるいは空白文字を使わずにタブ文字だけで字下げする。 (つまり、空白文字とタブ文字を混ぜない。)

  4. 開きブレース({)は ifelse, switch, do, while, for などのキーワードと 同じ行に改行せずに書く。開きブレースのあとは何も書かず改行する。

    良い悪い悪い
    if (n1 > n2) {
        max = n1;
        min = n2;
    } 
    
    if (n1 > n2) 
    {
        max = n1;
        min = n2;
    } 
    
    if (n1 > n2) { max = n1;
        min = n2;
    } 
    
  5. 閉じブレース(})は ifswitch, do, while, for などのキーワードのはじめの文字と列をそろえて書く。 その行には閉じブレース以外には何も書かない。

    良い悪い悪い
    if (n1 > n2) {
        max = n1; 
    } else {
        max = n2; 
    } 
    
    if (n1 > n2) {
        max = n1; 
        } else {
        max = n2; 
        } 
    
    if (n2 > max) {
        max = n2; 
    } if (n3 > max) { 
        max = n3; 
    }
    
  6. if 文, ifelse 文 や for 文, while 文, dowhile 文などでは、 選択されたり、繰り返したりされる文が一つだけの場合も、 ブレース({})に囲む。

    この約束事だけは、 教科書のプログラム例は必ずしもそうなっていないので、 特に注意する。

    良い悪い
    if (n1 > n2) { 
        max = n1;
    } else {
        max = n2;
    }
    
    if (n1 > n2)
        max = n1; 
    else 
        max = n2; 
    
    
    while (n1 < n2) { 
        printf("%d ", n1++);
    }
    
    while (n1 < n2)
        printf("%d ", n1++);
    
  7. 関数の定義は1列めから書きはじめる。 関数本体の開始を表す開きブレース({)は、関数頭部のあとに続けて改行せずに書くか、 改行して 1 列めに書く。 関数本体の最後を表す閉じブレース(})は、1 列めに書く。

    良い良い悪い
    int main(void) {
        printf("hello\n");
        return 0;
    }
    
    int main(void) 
    {
        printf("hello\n");
        return 0;
    }
    
    int main(void) 
        {
        printf("hello\n");
        return 0;
        }
    

例:

(コメントの中の数字は、上記の約束事の番号)


Koji Kagawa