質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
タブ

コンテンツの上下左右に参照用のメニューを設けることで、複数の要素やページの表示を可能にするユーザーインターフェイスパターンのこと。メニューをクリックすると、一つの要素が可視化され、他の要素は見えなくなる。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

コーディング規約

コーディング規約とは、コードの書き方についての決め事のことです。 文法のことではなく、そのチームなどの中の約束事としてどのような書き方で行うかを定めるもの。 項目の例として、関数や変数の命名規則、コーディングのスタイル、括弧やインデントの書き方などが挙げられます。

受付中

インデントにタブを使うことのデメリット

miu_ras
miu_ras

総合スコア900

タブ

コンテンツの上下左右に参照用のメニューを設けることで、複数の要素やページの表示を可能にするユーザーインターフェイスパターンのこと。メニューをクリックすると、一つの要素が可視化され、他の要素は見えなくなる。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

コーディング規約

コーディング規約とは、コードの書き方についての決め事のことです。 文法のことではなく、そのチームなどの中の約束事としてどのような書き方で行うかを定めるもの。 項目の例として、関数や変数の命名規則、コーディングのスタイル、括弧やインデントの書き方などが挙げられます。

33回答

13評価

30クリップ

69357閲覧

投稿2015/05/26 19:49

編集2016/12/14 02:05

インデントにタブを使うことのデメリットはありますか?

タブを使うことのメリット・半角空白を使うことのデメリットとしては
・半角空白を複数で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拡張です。一応このあたりをターゲットとしていただきたいですが、上記以外でも「この言語ではタブではエラーになる」 等の情報がありましたら教えていただきたいです。

※インデントにタブとスペースを混在させることは、少なくとも私にとってはありえないことで、必ずどちらかに統一すべきだと思います。なので基本的には議論の対象から外したいのですが、「混在も許すべき」「場合によっては役に立つ・必要」「混在も選択肢に入れるべき」などというご意見をお持ちの方は、そのお考えを教えていただきたいです。

この議論でよくつかわれる画像を添付しておきます。
イメージ説明

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

ikedas

2016/12/14 03:01 編集

画像は自作でしょうか。そうであれば、不愉快ですので取り除いて下さい。自作でないのでしたら、出所を明示して下さい (明示できないのなら、当然取り除いて下さい)。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

タブ

コンテンツの上下左右に参照用のメニューを設けることで、複数の要素やページの表示を可能にするユーザーインターフェイスパターンのこと。メニューをクリックすると、一つの要素が可視化され、他の要素は見えなくなる。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

コーディング規約

コーディング規約とは、コードの書き方についての決め事のことです。 文法のことではなく、そのチームなどの中の約束事としてどのような書き方で行うかを定めるもの。 項目の例として、関数や変数の命名規則、コーディングのスタイル、括弧やインデントの書き方などが挙げられます。