C言語関係掲示板

過去ログ

No766 インデントを付けるツール

[戻る] [ホームページ]
No.91

ツール
投稿者---みい(2003/06/09 21:22:35)


私が書いたコードはとても汚いです。
あんまり本にも細かく書いてないので、どうしようもありません。
インデントなどを自動でやってくれるツール?みたいなのが
あれば教えてください。


No.92

Re:ツール
投稿者---ともじ(2003/06/09 22:49:31)


こんばんは。

>私が書いたコードはとても汚いです。
>あんまり本にも細かく書いてないので、どうしようもありません。
>インデントなどを自動でやってくれるツール?みたいなのが
>あれば教えてください。

「インデントの付け方がよくわからないので、わかりづらいソースに
なってしまうのです。」と読めましたが、そういうことでしょうか。

気の利いたテキストエディタは、例えば、if と入力すると次の行で
インデントを付けてくれますが、これはあくまでも補助的な機能で、
やはりインデントをどういうときに付けるかは、自分で把握しておい
た方がいいですね。

以下、簡単にインデントの付け方についてまとめておきます。

インデントを付ける制御文は以下のものです。
if for while do〜while switch
いずれも、次の行でインデントを付け、文を書きます。文が終わって、
} を閉じるときに、インデントを戻します。この戻す位置は、制御文の
書き初めと縦に揃うようにします。
(例)
    if (条件) {
        文1;       インデントを付ける
        文2;       インデントを付ける
    }              インデントを戻す

    for (・・・) {
        文1;       インデントを付ける
        文2;       インデントを付ける
    }              インデントを戻す

    switch (…) {
    case 1:        ここは付ける人と付けない人がいる
            文1;   インデントを付ける
            文2;   インデントを付ける
            break;
    case 2:    インデントを戻す
               :
    }              インデントを戻す

制御文がネストしていても基本は同じです。
if for while do〜while switch
いずれも、次の行でインデントを付け、文を書きます。文が終わって、
} を閉じるときに、インデントを戻します。
    while (・・・) {
        if (・・・) {   インデントを付ける
            文1;        更にインデントを付ける
        }               一旦インデントを戻す
        else {
            文2;    更にインデントを付ける
        }               一旦インデントを戻す
     }                  最初までインデントを戻す


始まりの { の位置と、終わりの } の位置は多少バリエーションが
あります。上記以外にも、
    if (・・・)
    {
        文1;
    }
    else
    {
        文2;
    }

と{}を縦に並べる人もいます。また、
    if (・・・) {
        文1;
    } else {
        文2;
    }

のように、なるべく行が少なくなるように {} を付ける人もいます。



No.129

Re:ツール
投稿者---TDa(2003/06/12 16:02:25)


私はxyzzyというEmacs系のエディタを使っていますがこれは自動整形してくれます。
タブの深さとかその辺はLISPで設定しないといけないのでしきいは高いです。
でもなーーーーんにも考えないでタブキー押せばちゃんとインデントを合わせてくれます。

投稿されたコードをコピペして各行でタブキーを1回たたけばおけ。
#本当はこの動作をリージョン単位で自動でやってくれるコマンドがあったのですが忘れてしまった、、、。
このときカーソル位置がどこにあってもちゃんと整形してくれるので楽ちんです。
これがないと投稿されたコードやひどいインテンドのコードを読む気になりません。


No.130

Re:ツール
投稿者---しんちー(2003/06/12 17:04:49)


私は emacs か、Windows 上では Meadow という emacs クローンを使っています。

>#本当はこの動作をリージョン単位で自動でやってくれるコマンドがあったのですが忘れてしまった、、、。

emacs では M-C-\ だったかな?

No.131

Re:ツール
投稿者---TDa(2003/06/12 17:09:59)


>emacs では M-C-\ だったかな?

これをきっかけに探したら見つかりました。
M-x indent-region
でした。