ソースコードのインデント、タブよりもスペースを使うほうが多くの言語で優勢 53
ストーリー by hylom
皆様はどちらがお好み? 部門より
皆様はどちらがお好み? 部門より
insiderman 曰く、
ソースコード内でのインデントに水平タブを使うべきか、それともホワイトスペースを使うべきかは古くからある議論だが、GitHubの公開リポジトリ内にあるソースコードを調査した結果、多くの言語でスペースを使っているケースが多いという結果になったそうだ(@Hoffa氏による記事)。
興味深いのが、全体的にはタブよりもスペースを使う傾向があるが、Cではタブのほうがやや多い点。またRubyではタブを使うケースはほとんどなく、逆にGoでは標準のコード整形ツールがタブを使っているからか、スペースはほとんど使われていない。
インデントはタブ、位置合わせはスペース (スコア:2, すばらしい洞察)
これでn-tabの争いは個人のエディタの設定の問題でしかなくなるというのになんでそうしないんだろう。
これで困ったことはないし、いまどきのスマートインデントでもほとんどの場合でちゃんと対応してくれるんだけどな。
でもきっとTabとスペースの使い分けがちゃんと出来ない奴がいたりするんだろうなぁ。
まぁ、n-tabのチェックとかわらない手間でチェックできそうだけど。
インデントと位置合わせという意味的に異なるものを同じタブとかでやっちゃおうとするから問題が生じるのではなかろうか。
Re:インデントはタブ、位置合わせはスペース (スコア:1)
普通はそうなんだろうけど
自分のviがいくら設定してもスペースに変更されるんだよね。
なんでTAB押しているのにスペースに変更されるのか理解できない。
TABの幅を何スペース分の幅にするか決める事ができるのにな。
エクセルの自動変換みたいに身勝手なデフォ設定は止めて欲しい。
Re:インデントはタブ、位置合わせはスペース (スコア:1)
viの設定ぐらい覚えましょうよ
expandtab
違う (スコア:1)
通常のテキストじゃなくperlのソースの場合にだけ起きる。
.vimrcを読み込んでも反映されない。
Re: (スコア:0)
~/.vim/after/indent
Re: (スコア:0)
何その vim 拡張?
Re: (スコア:0)
今純粋viが載ってるLinuxなりUnixってあんの?
Re:インデントはタブ、位置合わせはスペース (スコア:1)
Re:インデントはタブ、位置合わせはスペース (スコア:1)
全面的に賛同する
そういう自動整形をサポートするエディタが欲しいくらいだ
Re: (スコア:0)
エディタが勝手にタブを変換したり
エディタによってタブの間隔に差があったり
百害あって一利なしなんだよなあタブは・・・
Makefile書くときくらいだわ使うの・・・
Re:インデントはタブ、位置合わせはスペース (スコア:1)
Re: (スコア:0)
tab 使ったら死ねるコードになる。
Re: (スコア:0)
親コメントのルールの範囲内なら各自自分にとって視認性の高いタブ幅をエディタに設定しておくだけでいい。
クソインデントルールをデフォに持ってるエディタはその設定だけ殺す必要は有るが。
1文字とか2文字のスペースでインデントされたネストの深いソースとか読みたくねぇし
スペースでインデントされることの方こそ百害あって一利なしだわ。
ソースの意味的構造が知りたいんであって、ソース書いた奴の好みのインデント幅とかどうでもいい。
Re: (スコア:0)
いっそ「タブコード」を「インデントコード」に改名させたい。
つまり (スコア:1)
統一されているCOBOLは優秀と。
Re:つまり (スコア:1)
Re: (スコア:0)
え?(LISP)
Re: (スコア:0)
たまに全角スペース混じったソース見るんですが(´・ω・`)
Re: (スコア:0)
なんもなく動いてるときは衝撃を受けるね。
Re: (スコア:0)
記入する桁位置まで決まっているRPGが最優秀だな
一度でもPythonスクリプトを書くとスペースしか不安で使えない (スコア:1)
だから~/.vimrcにset expandtab入れちゃう。
一度入れた設定はそのままになるので他の言語でもなし崩しでスペースに。
Re: (スコア:0)
これのせいか。
スコープの代わりがTABだっけ?
自分も練習でやってexpandtabを設定して忘れていたw
Makefileはタブ必須 (スコア:1)
Re:Makefileはタブ必須 (スコア:2, おもしろおかしい)
gmake:タブのつもりですか
ムカー
最悪 (スコア:1)
インデントは4、タブは8、インデントで8になるときはタブを使えというコーディング規約。
Re: (スコア:0)
たしかJavaがそうなってたと思ってJDK8のソース見てみたら全部スペースになってた。
勘違いだったかな?
Re: (スコア:0)
TAB とスペースの混在はEclipse 独自ルールだけど、それが標準になってたんだよな。
Re: (スコア:0)
そういうのが規約だったりデフォがそうなってるのはEmacsとかその辺りだったような…間違ってたらゴメン。
エディタで整形して表示しないことも多い時代であればコンソールのそれと合わせるために8幅タブになり、
視認性というか表示幅制約から4幅インデント、ファイルサイズ削減でTAB/SP混在インデント、なのは分からんでもないが、
今となってはインデントはタブで統一して欲しいわ。ホント。
「パッチをコンソールからコピペするからTAB文字避ける [livedoor.jp]」
って意見もあるが、データとして扱わずコンソールだのメールだのをコピペで経由するってスタイルがそもそもなぁ……
Re: (スコア:0)
FontForgeが、4インデントで8をタブにするコーディング規約でした。
過去にGitHub上で修正提案issueが出ているのを見つけましたが、却下されていました。
FontForge開発者はアレに慣れているらしい。
FontForge、VMS対応のコードがまだ残っていたりするので(2015年時点)。レガシーなプロジェクトだと思います。
あのインデントの規約って、どこ由来なのでしょうか。
# スラドにログインするのが面倒な環境なのでAC
最近 (スコア:1)
最近JavaScriptの開発するようになったのですが、eslintの設定がインデントは2スペースを強要されるのでTAB使わなくなってしまいました。
水平タブ (スコア:1)
1. ASCIIコードは、転送速度が非常に小さいテレタイプ端末を前提として60年代に設計されたもの。
つまり、タイプライターの位置を指示する制御文字であって、改行文字のように代替機能がないものを
除いて、制御文字を図形文字のテキストに入れるべきではない。
* ちなみに実用上水平タブを空白文字としている実装が多いので誤解が多いが、仕様上、水平タブは
空白文字ではなく制御文字(Format effector)だ。
http://sliderule.mraiow.com/w/images/7/73/ASCII.pdf
2. 文字数やタイプ数を減らすことができるという意見もあるが、コードにとって本質的ではない。
レイアウトはエディタ側に任せるべき。テキストをどう見せるかはレイアウトエンジンの仕事であり、
それを指示したい場合使うのはマークアップ言語である。
3. 可変幅なので環境に依存する。レイアウトのための制御文字なのに、それを使うことにより
レイアウトが崩れる可能性があることは致命的。本当にテキスト内でレイアウトをやりたいなら、
WYSIWYGエディタの機能を駆使して空白文字を使えばよい。
4. 水平タブ使いの人は、コード中に空白文字と水平タブを2種類を入れ込むことを行っている。
5. 垂直タブ使いますか?
Re: (スコア:0)
SP でインデントしている人は、きっと何も考えずに使っているんだろうと素直に思う。
1. HT が HT である事は誰でも知ってる。HT と (複数個の) SP が同値だと誤解している人が居るとは信じ難い。
2. コードにとって HT と SP は本質的に異なる。インデントはコードの論理構造を示す。インデントとして使うのが HT である。
3. HT はレイアウトのための制御文字では無い。見た目しか気にしないエディタばかりになった弊害で、勘違いが拡大再生産されている。
4. SP でインデントする人は、インデントで構造を表現したり、改行位置によってコーディングの意図を読み手に伝えよう、なんて事は考えたことも無いだろう。
5. 改行文字って LF ですか? CR ですか?? それとも CR+LF ですか???
Re: (スコア:0)
> 水平タブでインデントしている人はどこにメリットを見出してるんだろうと率直に思う。
ネストが深いクソみたいなプログラムを作らない様にするため。
2スペースとか3スペースのインデントのコード、見てみ。クソばっか。
派閥 (スコア:0)
A「タブといえば古より幅は8と決まってんだろ
B「は?今時4が常識でしょ
C「インデント深くなるので幅2にしますね…
というのが1ファイルの中に見受けられイヤになったので、タブ使ってもcommit前にスペースに変換してます
Re:派閥 (スコア:2)
むかしは 1バイトでもファイルサイズを削ろうとタブを
使ってましたが、今はスペースのことが多いですね。
エディタの設定は「タブの代わりにスペースを挿入」に
しています。
Re:派閥 (スコア:1)
その話はタブーです
Re: (スコア:0)
カルマボーナスご存じない・・・?
Re:派閥 (スコア:2)
そもそも、自分が書き込んだストーリーってモデ権持っていてもモデレートできなくなりますしね…
Re: (スコア:0)
複数のアカウントを持ったパペットマスターという可能性は一応ある。
タブはModel、幅はView (スコア:0)
タブで統一してれば混ざっても問題なくない?
Re: (スコア:0)
インデントにだけ使うならね
インデントにスペースはちょっと嫌かな (スコア:0)
IDEが変にインデント入れやがったとき、修正するのにちまちまひとつずつスペースを消していかなきゃならないので。
タブであればBS一発で1インデント下がるので、コーディング効率としては絶対にスペースよりはタブだと思うんだけど……なんであんなにスペース派が多いのかがよくわからない。
そもそもみんなスペースとタブを意識してないとか?
エディタorIDEの標準設定でそのまま使っている人が意外に多くて、それで結果的にスペース派が多いように見えるとか?実際は別にそんなのを気に留めたこともない、という人が圧倒的多数というだけだった、とかっていうオチじゃないよね?
Re:インデントにスペースはちょっと嫌かな (スコア:1)
修正するのにちまちまひとつずつスペースを消したりしないので、そこに非効率を感じないです。
(行選択してTabキーかShift+Tabキーでインデント変わるエディタ以外使う事がほとんどないので)
でもなぜスペースが良いかと言われると、イマイチ思い出せない。
だらだら列挙してみると
IDEは影響デカいとは思うが、ものによってはタブ文字のもあるので(VS codeとか昔はデフォルトタブ文字だったような。変えてた記憶があった。選択言語によるのかな。)
タブ幅は変えられるので環境依存。スペースまで混在してくるぐらいなら、全部スペースがいい(理由は次)。
スペースを置換するよりタブを置換した方が楽だった。
矩形選択するとき選択範囲に意外性が無い。
折り返し複数行のとき微調整しにくい(混在はやだし)。
Excelに貼り付けるとえらいことになる(貼り付けるなよまたはテキストボックスに貼れよって話ですけどなんとか設計書に部分的に利用方法コード載せたり)。
Webなどサンプルコードでタブ文字で公開しているものをあまり見かけない(コピペはあまりしないけど影響はありそう)。
メモ帳がタブ8文字分だからインデント深すぎて嫌だった(これかもしれない。昔エディタが自由に手に入れられない現場でわりとメモ帳使ってた時期があったので)。
(多いけど、ただ出しただけなので。)
Re: (スコア:0)
>タブ幅は変えられるので環境依存。
故に、ユーザが好きに設定しても(本来なら)怒られない。
ユーザごとに好みのある「インデント幅」を割り当てるのにこれだけ都合のいい項目はなかなか無い。
1~3文字インデントのソースとか勘弁して下さいってなるけど、タブインデントなら皆好きに設定できる。
まともにテキストを交換できる場所ならタブ使っても別に壊れない。
まともにテキストを交換できないとか、まともなエディタが使えない場合は仕方ないけど…それってただのバッドノウハウですし。
Re: (スコア:0)
最近のエディタはスペース設定でもBS一発で1インデント下がるからな。
Re: (スコア:0)
それだったらスペースじゃなくてもよくね
タブでよくね
Re: (スコア:0)
複数人で開発していて、共通のコーディング規約が無かった場合
Aさんタブ幅4
Bさんタブ幅8
Aさん「とりあえずここはインデント2つ分下げとくか」
Bさん「フアッ!」
Re: (スコア:0)
お陰で位置揃えが面倒で面倒で……
どーせその辺をエディタが自動判別なんてしきれるわけがないし、
インデントはタブ、位置合わせはスペース、タブ幅はユーザ任意、ってシンプルなルールでいいんだよ。
Re: (スコア:0)
僕もタブ派なのですが、インデントで階層を示す言語をターミナルで直接使うと、タブだと上手く行かないようです。
議論出来る言語がうらやましい (スコア:0)
先生、Whitespace言語ではタブとスペースのどちらでインデントすべきでしょうか?