補足3:プログラムを書くスタイル


ソースプログラムはコンピュータに仕事をさせるための、 一種の「手順書」と呼べるものですが、 人間自身もそれを見ます。 ソースプログラムを書く場合には、 自分以外の人がそれを見て、 自分が何をコンピュータにさせようとしているのかが 容易に理解できるよう留意する必要があります。 見かけの美しいプログラムを書くことは、 無駄なことではありません。


コメント(注釈)

そのプログラムを他の人や、 プログラムの作者自身が読むときの参考になる、 そのプログラムに対する解説です。コンパイラはそれを無視します。 C言語のコメントは /* で始まり */ で終わります。

/*
**      プログラム: hello.c -- "Hello!" を標準出力に出力する
**      目的: プログラムの例
**      作者: 山田太郎
**      作成日: 1994年10月 3日
**      修正日: 1994年10月17日
*/
int main(void)
{
    /* 挨拶をする */
    printf("Hello!\n");
    return 0;
}
コメントの入れ子(ネスティング)はできません。 次のような例はエラーになります。
/* ……………… /* ……………… */
…………………… */
この部分が
ひとつのコメントになる
このに部分には
/* がないことになる
プログラムはエッセイのように読むことができるものでなければなりません。 適切なコメントのないプログラムには 「トラブルの原因が潜在している」というエラーがあるとみなされます。


インデント(字下げ)

プログラムの構造を視覚的に表現するために、 プログラムにインデントを付けてください。 mule ではタブキーをタイプすると、 適切なインデントを自動的に付けてくれます。

カーソルのある行にインデントを付けるTab または C-i
インデントはブロック({ と } にはさまれた部分)単位で、 入れ子になっている部分を深く(右に)します。 すなわち、{ に出会う度に、その次の行は1段右から書き始め、 } に出会う度に、その次の行は1段左から書き始めます。
#include <stdio.h>

int main(void)
{
    char buf[1024];

    for (;;) {
        printf("Input: ");
        if (fgets(buf, sizeof(buf), stdin) == NULL) break;
        printf("Output: %s", buf);
    }
    return 0;
}
こういうスタイルで書く人もいます。
#include <stdio.h>

int main(void)
{
    char buf[1024];

    for (;;)
    {
        printf("Input: ");
        if (fgets(buf, sizeof(buf), stdin) == NULL)
            break;
        printf("Output: %s", buf);
    }
    return 0;
}
インデントを付けないと、 非常に読みにくいプログラムになります。
#include <stdio.h>
int main(void)
{
char buf[1024];
for (;;) {
printf("Input: ");
if (fgets(buf, sizeof(buf), stdin) == NULL)
break;
printf("Output: %s", buf);
}
return 0;
}