インデントは大事だよっていう話


はじめに

この記事は、最近プログラミングを授業等で学び始めた人に向けています。
また、C言語を例として取り上げています。

皆さんは「インデント」という言葉を聞いたことがありますか?
この記事では、その「インデント」について解説します。

インデントとは

プログラミングにおいて、ブロックの中の行頭にスペースを入れて字下げをすることです。

ブロックとは、C言語では{ }で囲われた範囲のことです。

百聞は一見にしかずと言いますので、まずは下の例を見てみましょう。

インデントがついていない例

/* 0〜20までの偶数を2倍して出力するコード */
#include <stdio.h>
int main(void)
{
int i;
for (i = 0; i <= 20; i++)
{
if (i % 2 == 0)
{
printf("%d\n", i * 2);
}
}
return 0;
}

インデントがついている例

/* 0〜20までの偶数を2倍して出力するコード */
#include <stdio.h>

int main(void)
{
    int i;
    for (i = 1; i <= 20; i++)
    {
        if (i % 2 == 0)
        {
            printf("%d\n", i * 2);
        }
    }
    return 0;
}

この2つを見比べてどちらが見やすいでしょうか?
どちらも実行結果は変わりませんが、おそらく大半の人がインデントがついている例のほうが見やすいと思います。

インデントをつけると、どの文がどのブロックに属しているか、ひと目で分かるようになります。
これは、バグを作らないためにも大事なことです。

ではインデントの付け方について実例と共にルールを見ていきましょう。

インデントのルール

ブロック1つにつき、決まった数の半角スペースを行頭に入れる

これだけです。

この決まった数の半角スペースは、人・言語によって異なりますが、ほぼ2つ4つです。
また、半角スペースではなく、タブ文字を使用することもあります。

しかし、ここで大切なことは、途中で半角スペースの数を変えたりしないことです。半角スペースの数は統一するようにしましょう。

全角スペースだとコンパイルが通らないので注意しましょう。

今回の例では、1つのインデントあたり4つ半角スペースをつけることにします。

では、実際に見ていきましょう。

/* include等は省略します。 */
int main(void)
{
    /* ここは{}で囲われていますので、1段インデントを付けます */
    int input;
    scanf("%d", &input);

    if (input != 0)
    {
        /* {}のなかの{}についても、字下げすることに注意してください。 */
        /* ここには、合計で2段(8スペース)のインデントがついています。 */
        printf("0以外を入力しましたね!\n");

        if (input == 1)
        {
            /* ここは3重目の{}なので、3段(12スペース)のインデントを付けます。 */
            printf("1を入力しましたね!\n"); 
        }
    }
    return 0;
}

だいたい感覚は掴めましたでしょうか。
必要なのは、「{ }ブロック1つにつき、決まった数の半角スペースを行頭に入れる」これだけです。
多少の手間ですが、これによってコードが読みやすくなります。

インデントがおかしい例

int main(void)
{
 int input;
     scanf("%d", &input);

 if (input != 0)
     {
  printf("0以外を入力しましたね!\n");
        /* ... */

    if (input == 1)
    {
        /* ... */
        printf("1を入力しましたね!\n"); 
    }
    }
    return 0;
}

このコードでは、半角スペースを入れることはできていますが、ブロックごとに分けられていなかったり、半角スペースの数が統一されていません。

これでは却って読みづらいですね。
コードの意味を勘違いしてしまう可能性もあります。

インデントを付ける時は、正しい数のスペースを付け、コードのまとまりが理解しやすいようにしましょう。

おわりに

インデントをつけることは、プログラムを書く上では欠かせない行為です。
正しく付けて、読みやすいコードを心がけましょう!

また、この記事は以下の方々と共同執筆したものです。
この場を借りて御礼を申し上げます。ありがとうございました!
@shun-shobon
@soshi_harami
@isso0424