自分なりのコード規約を作ろう

みなさん、自分なりのコード規約はお持ちでしょうか?

コード規約(スタイルガイド、コーディングルールと呼ばれることもあります)とは「変数名はこういうルールに従って書きます、インデントはこういうルールでつけます」みたいな、プログラミングする際のルールをまとめたものです。

会社や組織だと、その会社ないしは組織でコード規約を持っていることが多く、みんなにその規約を守ってもらうことで、みんなが同じような書き方になり、見やすくメンテしやすくなるというメリットがあります。

個人でプログラミングする、個人でソフトを作る場合なら、誰かのために気をつかう必要もありませんし、自由にどんな書き方をしても良いのかもしれません。しかしながら、個人でプログラミングする時も、「自分はこういう自分ルールで書く」というようなものを持っているとメリットがあるかなと思います。

そのメリットとは、自分が自分で書いたコードを読みやすくなり、不用意なバグを減らせるということです。

例えば、1から10までの中に素数がいくつあるかのプログラムを考えた時、例えばC言語であれば

#include <stdio.h>
void main(void)
{
    int flag = 0;
    int cnt = 0;

    for (int i = 2; i <= 10; i++) {
        flag = 0;
        for (int j = 2; j < i; j++) {
            if (i % j == 0) {
                flag = 1;
                break;
            }
        }
        if (flag == 0) {
            cnt++;
        }
    }
    printf("%d\n", cnt);

    return 0;
}

という風に書くこともできますし、一方で以下のようにも書くことができます

#include <stdio.h>
void main(void){
    int hoge = 0;
    int fuga = 0;

    for (int i = 2; i <= 10; i++)
    {
        hoge = 0;
        for (int j = 2; j < i; j++) {
        if (i % j == 0) {
        hoge = 1;break;
        }
        }
    if (hoge == 0)
    fuga++;
    }
    printf("%d\n", fuga);

    return;
}

さて、どちらのコードが見やすいかと聞かれたら、大抵の人は前者と答えるかと思います。 後者の見にくい原因は何でしょうか?

  • 波括弧( {} )インデントがバラバラなので、どの波括弧がどのブロックなのかが分かりづらい → 波括弧の付け忘れ、消し忘れに気づきにくい
  • hoge とか fuga だとどんなことをする変数か分かりにくい → 自分でもどんな変数だか分からなくなる

があるかと思います。

自分で書いたコードも1ヶ月経てば他人のコード、とも言いいますし、自由に書いて良いとはいえ、自分なりに「こういう風に書く」というルールを持っているとプログラミングが効率よくできるようになるのかなと思います。

さて、コード規約の中身ですが、例えば項目として下記のようなものが入っています(これは一例を示しただけで、実際はもっと細かく色々と書かれていることが多いです)

  • コードレイアウト
    • インデント
    • 波括弧の位置
  • コメントの書き方
  • ネーミングルール
    • 変数名
    • 関数名
    • 構造体名/クラス名
    • モジュール名、パッケージ名
    • ファイル名

この辺りはコード規約で検索をすると色々と出てくると思います

組織に属していて、その組織にコード規約がある場合はそれに従うべきですが、個人でプログラミングする用のコード規約を作るのもいいかもしれません。