コーディングをする皆様。インデントを今日もせっせと打っていらっしゃりますか?
さて、そのインデントを打つ時にタブ派とスペース派に分かれることが多いと思います。もちろんプロジェクトで指定があれば、従うしかないんですが。
そんなインデントに関する疑問を突然払拭したく思い立ったので、思いっきり調べてみます。
ちなみに私は完全にタブだけを信じて、タブだけを可視化して、タブだけを使っているタイプの人間です。
目次
現在主流のインデント方法
タブで統一するパターン。半角4文字分スペースのパターン。半角2文字分スペースのパターン。が現在の王道インデントのようです。
主要なコーディング基準やコーディング規約に書かれているインデントについての取り決めを見ていきます。
WordPressのコーディング基準
WordPress › PHP Coding Standards « Make WordPress Core
インデント
インデントは論理的な構造を反映するようにしてください。本物のタブを使います。スペースはダメです。こうすると、多くの閲覧環境で柔軟に扱えます。
例外: 何かを整列させて読みやすくしたいコードブロックがあれば、最初のインデントはタブを使い、その後でスペースで差分を埋めることができます。
なるほど地球上で最も使われるPHPで記述されたCMSであるWordPressはタブ派ですね。
PHP-FIGのコーディング規約
PSR-2: Coding Style Guide – PHP-FIG
インデントは4つのスペースとしなければなりません。タブによるインデントは用いてはなりません。
注意:スペースとタブを混在せず、スペースのみとすることにより差分表示やパッチ、履歴や注釈がずれる問題を回避できます。 スペースのみを使うことで、微妙なサブインデントの位置合わせを容易とすることができます。
PHPの標準コーディング規約を作っているPHP-FIGによると完全にスペース4つを使えとのお達しが。
GoogleのHTML/CSS/Javascriptのコーディング規約
Indentation
Indent by 2 spaces at a time.
Don’t use tabs or mix tabs and spaces for indentation.
Googleが発表しているHTMLとCSSとJavascriptに関するコーディング規約ではスペース2つを使えとのこと。
タブなのかスペースなのか
もっともっと各所のコーディング規約を調べていこうと思ったのですが、いきなり三者三様状態になったのでストップしました。
その中でそれぞれの「なぜそうするのか?」の注釈を読んでいくと「ふーん」程度の理由しか見当たりません。
一番は「皆が統一すること」が重要であって「全部これでいいよ」というインデントはないということです。
まとめ
私が書いて、私しか編集しないコーディングになら、何を使ってもまったく問題ないと思います。というか、ファイルサイズを考慮すればタブが一番メリットがあるような気がします。
だけど、もしも世に公開するコードや大勢の関わるプロジェクトならば、インデント一つをとってみても決め事は必要になるというお話なんでしょう。タブん。
どんな場面にも対応できるようにしておけばそれで十分だと思いました。
今日も知識欲は止まらない。