パスワードを忘れた? アカウント作成
12904409 story
プログラミング

ソースコードのインデント、タブよりもスペースを使うほうが多くの言語で優勢 53

ストーリー by hylom
皆様はどちらがお好み? 部門より
insiderman 曰く、

ソースコード内でのインデントに水平タブを使うべきか、それともホワイトスペースを使うべきかは古くからある議論だが、GitHubの公開リポジトリ内にあるソースコードを調査した結果、多くの言語でスペースを使っているケースが多いという結果になったそうだ(@Hoffa氏による記事)。

興味深いのが、全体的にはタブよりもスペースを使う傾向があるが、Cではタブのほうがやや多い点。またRubyではタブを使うケースはほとんどなく、逆にGoでは標準のコード整形ツールがタブを使っているからか、スペースはほとんど使われていない。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2016年09月02日 12時49分 (#3074263)

    これでn-tabの争いは個人のエディタの設定の問題でしかなくなるというのになんでそうしないんだろう。
    これで困ったことはないし、いまどきのスマートインデントでもほとんどの場合でちゃんと対応してくれるんだけどな。

    でもきっとTabとスペースの使い分けがちゃんと出来ない奴がいたりするんだろうなぁ。
    まぁ、n-tabのチェックとかわらない手間でチェックできそうだけど。

    インデントと位置合わせという意味的に異なるものを同じタブとかでやっちゃおうとするから問題が生じるのではなかろうか。

  • by Anonymous Coward on 2016年09月02日 13時37分 (#3074272)

    統一されているCOBOLは優秀と。

  • だから~/.vimrcにset expandtab入れちゃう。
    一度入れた設定はそのままになるので他の言語でもなし崩しでスペースに。

    • by Anonymous Coward

      これのせいか。
      スコープの代わりがTABだっけ?
      自分も練習でやってexpandtabを設定して忘れていたw

  • by nekopon (1483) on 2016年09月02日 15時06分 (#3074290) 日記
    さいきんはmakeとか使わなくなったのかなぁ
  • by Arimac (10826) on 2016年09月02日 20時07分 (#3074313) ホームページ 日記

    インデントは4、タブは8、インデントで8になるときはタブを使えというコーディング規約。

    • by Anonymous Coward

      たしかJavaがそうなってたと思ってJDK8のソース見てみたら全部スペースになってた。
      勘違いだったかな?

      • by Anonymous Coward
        Javaのガイドライン的には oak の時代から一貫してスペースでTABは禁止
        TAB とスペースの混在はEclipse 独自ルールだけど、それが標準になってたんだよな。
      • by Anonymous Coward

        そういうのが規約だったりデフォがそうなってるのはEmacsとかその辺りだったような…間違ってたらゴメン。

        エディタで整形して表示しないことも多い時代であればコンソールのそれと合わせるために8幅タブになり、
        視認性というか表示幅制約から4幅インデント、ファイルサイズ削減でTAB/SP混在インデント、なのは分からんでもないが、
        今となってはインデントはタブで統一して欲しいわ。ホント。
        パッチをコンソールからコピペするからTAB文字避ける [livedoor.jp]」
        って意見もあるが、データとして扱わずコンソールだのメールだのをコピペで経由するってスタイルがそもそもなぁ……

    • by Anonymous Coward

      FontForgeが、4インデントで8をタブにするコーディング規約でした。
      過去にGitHub上で修正提案issueが出ているのを見つけましたが、却下されていました。
      FontForge開発者はアレに慣れているらしい。
      FontForge、VMS対応のコードがまだ残っていたりするので(2015年時点)。レガシーなプロジェクトだと思います。

      あのインデントの規約って、どこ由来なのでしょうか。

      # スラドにログインするのが面倒な環境なのでAC

  • by Anonymous Coward on 2016年09月02日 21時04分 (#3074326)

    最近JavaScriptの開発するようになったのですが、eslintの設定がインデントは2スペースを強要されるのでTAB使わなくなってしまいました。

  • by Anonymous Coward on 2016年09月05日 12時56分 (#3075129)
    水平タブでインデントしている人はどこにメリットを見出してるんだろうと率直に思う。

    1. ASCIIコードは、転送速度が非常に小さいテレタイプ端末を前提として60年代に設計されたもの。
    つまり、タイプライターの位置を指示する制御文字であって、改行文字のように代替機能がないものを
    除いて、制御文字を図形文字のテキストに入れるべきではない。

    * ちなみに実用上水平タブを空白文字としている実装が多いので誤解が多いが、仕様上、水平タブは
    空白文字ではなく制御文字(Format effector)だ。

    http://sliderule.mraiow.com/w/images/7/73/ASCII.pdf

    2. 文字数やタイプ数を減らすことができるという意見もあるが、コードにとって本質的ではない。
    レイアウトはエディタ側に任せるべき。テキストをどう見せるかはレイアウトエンジンの仕事であり、
    それを指示したい場合使うのはマークアップ言語である。

    3. 可変幅なので環境に依存する。レイアウトのための制御文字なのに、それを使うことにより
    レイアウトが崩れる可能性があることは致命的。本当にテキスト内でレイアウトをやりたいなら、
    WYSIWYGエディタの機能を駆使して空白文字を使えばよい。

    4. 水平タブ使いの人は、コード中に空白文字と水平タブを2種類を入れ込むことを行っている。

    5. 垂直タブ使いますか?
    • by Anonymous Coward

      SP でインデントしている人は、きっと何も考えずに使っているんだろうと素直に思う。

      1. HT が HT である事は誰でも知ってる。HT と (複数個の) SP が同値だと誤解している人が居るとは信じ難い。

      2. コードにとって HT と SP は本質的に異なる。インデントはコードの論理構造を示す。インデントとして使うのが HT である。

      3. HT はレイアウトのための制御文字では無い。見た目しか気にしないエディタばかりになった弊害で、勘違いが拡大再生産されている。

      4. SP でインデントする人は、インデントで構造を表現したり、改行位置によってコーディングの意図を読み手に伝えよう、なんて事は考えたことも無いだろう。

      5. 改行文字って LF ですか? CR ですか?? それとも CR+LF ですか???

    • by Anonymous Coward

      > 水平タブでインデントしている人はどこにメリットを見出してるんだろうと率直に思う。

      ネストが深いクソみたいなプログラムを作らない様にするため。

      2スペースとか3スペースのインデントのコード、見てみ。クソばっか。

  • by Anonymous Coward on 2016年09月02日 12時42分 (#3074260)

    A「タブといえば古より幅は8と決まってんだろ
    B「は?今時4が常識でしょ
    C「インデント深くなるので幅2にしますね…

    というのが1ファイルの中に見受けられイヤになったので、タブ使ってもcommit前にスペースに変換してます

  • by Anonymous Coward on 2016年09月02日 14時31分 (#3074280)

    IDEが変にインデント入れやがったとき、修正するのにちまちまひとつずつスペースを消していかなきゃならないので。

    タブであればBS一発で1インデント下がるので、コーディング効率としては絶対にスペースよりはタブだと思うんだけど……なんであんなにスペース派が多いのかがよくわからない。

    そもそもみんなスペースとタブを意識してないとか?
    エディタorIDEの標準設定でそのまま使っている人が意外に多くて、それで結果的にスペース派が多いように見えるとか?実際は別にそんなのを気に留めたこともない、という人が圧倒的多数というだけだった、とかっていうオチじゃないよね?

    • by Anonymous Coward on 2016年09月02日 21時09分 (#3074328)

      修正するのにちまちまひとつずつスペースを消したりしないので、そこに非効率を感じないです。
      (行選択してTabキーかShift+Tabキーでインデント変わるエディタ以外使う事がほとんどないので)

      でもなぜスペースが良いかと言われると、イマイチ思い出せない。
      だらだら列挙してみると

      IDEは影響デカいとは思うが、ものによってはタブ文字のもあるので(VS codeとか昔はデフォルトタブ文字だったような。変えてた記憶があった。選択言語によるのかな。)
      タブ幅は変えられるので環境依存。スペースまで混在してくるぐらいなら、全部スペースがいい(理由は次)。
      スペースを置換するよりタブを置換した方が楽だった。
      矩形選択するとき選択範囲に意外性が無い。
      折り返し複数行のとき微調整しにくい(混在はやだし)。
      Excelに貼り付けるとえらいことになる(貼り付けるなよまたはテキストボックスに貼れよって話ですけどなんとか設計書に部分的に利用方法コード載せたり)。
      Webなどサンプルコードでタブ文字で公開しているものをあまり見かけない(コピペはあまりしないけど影響はありそう)。
      メモ帳がタブ8文字分だからインデント深すぎて嫌だった(これかもしれない。昔エディタが自由に手に入れられない現場でわりとメモ帳使ってた時期があったので)。

      (多いけど、ただ出しただけなので。)

      親コメント
      • by Anonymous Coward

        >タブ幅は変えられるので環境依存。
        故に、ユーザが好きに設定しても(本来なら)怒られない。
        ユーザごとに好みのある「インデント幅」を割り当てるのにこれだけ都合のいい項目はなかなか無い。
        1~3文字インデントのソースとか勘弁して下さいってなるけど、タブインデントなら皆好きに設定できる。

        まともにテキストを交換できる場所ならタブ使っても別に壊れない。
        まともにテキストを交換できないとか、まともなエディタが使えない場合は仕方ないけど…それってただのバッドノウハウですし。

    • by Anonymous Coward

      最近のエディタはスペース設定でもBS一発で1インデント下がるからな。

      • by Anonymous Coward

        それだったらスペースじゃなくてもよくね
        タブでよくね

        • by Anonymous Coward

          複数人で開発していて、共通のコーディング規約が無かった場合
          Aさんタブ幅4
          Bさんタブ幅8

          Aさん「とりあえずここはインデント2つ分下げとくか」
          Bさん「フアッ!」

      • by Anonymous Coward

        お陰で位置揃えが面倒で面倒で……

        どーせその辺をエディタが自動判別なんてしきれるわけがないし、
        インデントはタブ、位置合わせはスペース、タブ幅はユーザ任意、ってシンプルなルールでいいんだよ。

    • by Anonymous Coward

      僕もタブ派なのですが、インデントで階層を示す言語をターミナルで直接使うと、タブだと上手く行かないようです。

  • by Anonymous Coward on 2016年09月03日 0時06分 (#3074347)

    先生、Whitespace言語ではタブとスペースのどちらでインデントすべきでしょうか?

typodupeerror

日々是ハック也 -- あるハードコアバイナリアン

読み込み中...