ゴミのようなコードを見たときに利用するべき astyle のススメ

他人の書いたコードがクソな場合は相当数ありますが、それでもフォーマットさえ整えば多少なりとも読みやすくなります。

僕は最近まで世の中の整形ツールはインデントくらいしか直してくれないと思っていました。
しかし、 astyle というツールに適切なオプションを渡せば、とても読み易いフォーマットに整形されることを知ったのです。

たとえば以下のようなゴミコードがあるとしましょう。 (処理に意味はありません)

#include <stdio.h>

int main(void){
	int a,b;
    int * p;

    b= a=1;p=&a;

    if(a==b) printf("hello!") ;
    else printf ("hello, %d",a );

  return b;
}

よく紹介されている astyle の使い方は以下のようなもので、せいぜいがインデントしか直してくれません。

astyle --style=kr fuck.c

この出力結果は以下のようになります。

#include <stdio.h>

int main(void)
{
    int a,b;
    int * p;

    b= a=1;
    p=&a;

    if(a==b) printf("hello!") ;
    else printf ("hello, %d",a );

    return b;
}

これではダメです。読み辛い。
そこで astyle のオプション一覧を見ます。そこを小一時間眺め吟味した結果がこうなりました。

astyle --style=1tbs -s4 -S -N -Y -M80 -p -j -k1 -U -H fuck.c

この出力結果は以下のようになります。

#include <stdio.h>

int main(void)
{
    int a, b;
    int* p;

    b = a = 1;
    p = &a;

    if (a == b) {
        printf("hello!") ;
    } else {
        printf("hello, %d", a);
    }

    return b;
}

どうでしょうか。かなり読み易くなったと思います。
個人的には if-else を自動的に中括弧付きに変換してくれるのが革命だと思っています。

どうかこんなツールを使わなくて済むようなコードを世界中の人が書いてくれますように。