2023年1月20日金曜日

インデントはタブかスペースか 宗教戦争

 インデントの文字コードをタブにするかスペースにするか、好みが別れると思います。
半数以上の人はスペースを好むと思いますが、有名オープンソースでもタブの所は結構あります。
感覚としては、日本ではスペース派が圧倒的でしょうか。

私は最初から長年スペースを利用していました。
当時はそうしなければならない理由があったためです。

■スペースが圧倒的な支持を受けた理由

人によって開発環境がバラバラであり、エディッタの動作設定項目が無いのが当たり前な時代でした。
そしてエディッタによってタブ幅が異なり、変更できません。
見た目、タブなのかスペースなのか区別する機能のあるエディッタなんかありません。
タブではなくうっかりスペースを使う人が続出します。初心者に多い。
自分のエディッタのタブ幅に合わせてスペースを打つことになります。

カオスです

そんな事故が多いため、環境に左右されないスペースによるインデントが広まっていきました。

■そして今

伝統的にスペースを使っている人が多い状態です。
今はただのテキストエディッタを使うような人ではなければ、どちらでも問題ない時代です。

私は長年スペース派でしたが、環境の高性能化により、タブ派に転身しました。
タブのが何かと扱いが楽なのです。スペース時代のストレスが一気に無くなり快適にコーディングできるようになりました。
なので、私のプロジェクトではタブがルールになっています。

■タブ派になった理由

・今の開発はPHPのみ ※phpのプログラミングでは phpstormを使うのが常識レベルになった。
・スペースとタブを可視化してるのだが、スペースだと見た目が汚くてみにくい。
・スペースで入れ子だと、区切りが分かりにくい場合がある
・スペースだとカーソルキーでの移動がつらい。
・スペースだと連打で入力する人がいる。個数違う。オープンソースで多い。
・タブなら、好みのインデント幅で表示できて便利。
・文字先頭からコピーする時、タブなら適当でもしっかり先頭からコピーできる。スペースがあると狙い定めるの面倒。

他にも色々あると思いますが、ぱっと思い出せたのはこのぐらいです。

もちろんタブは万能ではありません。
スペースのが好ましい場面もあります。
あくまで私の仕事では、わざわざスペースにする必要性を全く感じないというだけです。

■タブの限界

タブが使えるのは、タブをしっかりサポートしている環境だけです。
例えばssh接続してコンソール上から書き換える物なんかは、タブが使えません。
ブラウザのtexarea要素を使って書き換える場合も、標準ではタブをサポートしていません。
私の場合はJavaScriptでタブ入力を可能にしましたが。
他にも、タブが使えなかったり、不便だったりするケースがあると思います。

■結論

少人数特定の人のみで開発を行い、全員タブがまともに扱える環境ならば、タブ。
初心者が多かったり開発環境がバラバラすぎた場合、どんな環境でも耐えられるスペースが無難って感じがします。