インデントにタブを使うことのデメリットはありますか?
タブを使うことのメリット・半角空白を使うことのデメリットとしては
・半角空白を複数で1インデントとすることにより、少ない文字数で表現でき、ファイルサイズが小さくなる
・1インデントが正しく構成されているか一目でわかる
→例えば半角空白4つで1インデントとするルールで、3インデントのはずの個所で半角空白11個とか13個で書かれているケースをしばしば見かけるが、ぱっと見ただけでは正しいインデントなのか判別しにくい
・タブならエディタの設定で、自分の見やすい表示幅に調節できる(ことが多い。エディタによるが)
・インデント中をカーソルで移動する際やインデントを削除する際に、少ないキー押下回数で済み楽に操作できる
・エディタの表示設定で、半角空白・全角空白・タブを表示するようにしたときに、半角空白でインデントをしているとうっとうしい
→「半角空白・タブの混在」や「全角空白の混入」を避けるために、非表示文字も見分けがつく設定にしておくべきだと思う
・半角空白でインデントを表現する場合、2個派と4個派とその他派で対立が起こる
が挙げられ、一言で言えばタブを使うことは、メリットが多くデメリットは無く、合理的だと思っています。
ところが、以前先輩と話したときに「タブは制御文字だから問題が起きることがある」というようなことをいわれたことがあります。そのときに明確に確認できず、またもう話す機会が無いので確かめられません。
それが正しいかどうかは別とし…
(1)インデントにタブを使うことにデメリットはあるか
(2)インデントに半角空白を使うことにメリットはあるか
(3)現実問題として問題が発生することはあるか。あるなら具体的に。
についてご意見ください。
プラットフォーム特有・言語特有の場合には、その旨を明記していただきたいです。
よろしくお願いします。
※ここで言う**「インデント」とは、「ネストの階層構造を表現するために行頭に非表示文字を挿入し字下げすること」**とします。行中の位置揃えや装飾を「インデント」と呼ぶ人もいるようなのですが、本質問では無関係とさせてください。
※また、スペース派の方は「タブ幅が8文字になっていたとき」を引き合いに出す人がなぜか多いのですが、本質問は「文字数の比較」では無く「タブとスペースの比較」です。ので、「タブ幅が8文字になっていたとき」を引き合いに出すのならば「タブ幅が8文字になっていたときは問題が起きるが、タブ1文字を半角8文字に置き換えたら問題は起きない」ことを前提条件として考えていただきたいです。
※プロジェクトの方針等でルールが定められていた場合に、ルールに従うのは当たり前の話です。ので、そのようなケースはここでは考えません。単独のプロジェクト等で、方針を決める際の選定理由などと考えていただければいいと思います
※一応、最近私が扱う言語は、PHP, Java, JavaScript, HTML, CSS、開発対象はWebシステム, Webサイト, Androidアプリ, Chrome拡張です。一応このあたりをターゲットとしていただきたいですが、上記以外でも「この言語ではタブではエラーになる」 等の情報がありましたら教えていただきたいです。
※インデントにタブとスペースを混在させることは、少なくとも私にとってはありえないことで、必ずどちらかに統一すべきだと思います。なので基本的には議論の対象から外したいのですが、「混在も許すべき」「場合によっては役に立つ・必要」「混在も選択肢に入れるべき」などというご意見をお持ちの方は、そのお考えを教えていただきたいです。
この議論でよくつかわれる画像を添付しておきます。
まだ回答がついていません
会員登録して回答してみよう