« XAMPP(Version 1.7.1)でPEARライブラリがインストールできない場合 | メイン | 天邪鬼? »
2009年6月21日
ソースのインデントに使うタブは、ハードタブかソフトタブか?
ソースコードにはインデントがつきものです。
インデントにはタブで表現するのですが、そのタブはハードタブかソフトタブか?という問題。
Webクリエイターの中には、そもそもハードタブとかソフトタブという言葉がなんなのか知らない人も多いはず。
要するに、ハードタブは[Tab]キーで4文字分だの8文字分だのタブ文字「\t」が入るもの。
ソフトタブはそれを空白文字(半角スペース)で表現したものです。
ソースコードのインデントには人それぞれ好みがあります。
タブは4タブ(4文字分)だろとか、いや8タブ(8文字分)だろとか・・・。
Webで言えば、JavascriptやActionScriptは入れ子ごとにインデントするが、HTML/XHTMLはインデントしないとか。
ちなみに私は、上記のように、JavascriptやActionScriptは入れ子ごとにインデントしますが、HTML/XHTMLはインデントしません。インデントした横長なHTML/XHTMLは逆に見づらいと思っているので。
さてココで問題にするのは、タブの文字幅ではなくて、タブをタブ文字で表現するか、空白文字で表現するかという問題。
それぞれのメリット・デメリットというか、特徴を列挙しますと・・・
【ハードタブ】
- 環境によってタブ幅が変わる。よって、きれいに整形したソースも、他人が見たらガタガタになっていることがある。
- ソースコードの編集はしやすい!?(エディタによって違う)
【ソフトタブ】
- 4タブだの8タブだの、タブ文字数を他人に強制する。
- 違う環境でも、見え方が統一できる。
- Pythonなどの一部のスクリプト言語は、インデントが論理構造に影響するので、バグの発生を抑えることができる!?
さて、世の中にはハードタブ派とソフトタブ派があるようで、どちらにも言い分があります。
宗教戦争とまではいきませんが、どちらが絶対に正しいとは言えない以上、不毛な論戦になるわけです。
ちなみに私は最近ハードタブからソフトタブ派に改宗しました。といっても、一部のプログラム言語だけですけど。
- Pythonだけでなく、Perl、PHPなどはソフトタブにしました。
- JavascriptやHTML/XTML/CSSに関しては、Dreamweaverのデフォルトに合わせてハードタブ(他のWebデザイナーはデフォルト設定のまま使用していることが多いと思われるので)
- ActionScriptもハードタブ。Adobe Flashのデフォルト設定がハードタブのため。
私も含めて、私の周りではDreamweaverやFlashを使ってオーサリングしています。
これをわざわざソフトタブを強要するのは難しいし、強要してまで変更させるメリットは無いでしょう。
逆にPythonを含めるPHPだのPerlだのの編集はこれといってエディタが統一されているわけではありません。
私は主にテキストエディタ(EmEditor)。ごくたま~にEclipse(Aptanaプラグイン)ですが、最近じゃ滅多に起動しません(汗。
私の周りでもEclipseを使っている人がちょっといるくらいで、あとはみんなテキストエディタ(秀丸だったりSakuraエディタだったり)
それにタブは4タブだ!いや8タブだ、いやGoogle社内は2タブらしいぞ!?なんていう不毛なこだわりを持っている人もいません。
だったら、ハードタブで整形して、他人が見たらガタガタに見えるよりも、いっそソフトタブの方がいいと思ったわけです。
EmEditorにはタブ文字数の設定のほか、「空白をTabに変換」と「Tabを空白に変換」のメニューがあります。
Python、PHP、Perlのソースでハードタブが混じっていたら、上記のメニューでソフトタブに変換してしまいます。
最後に、どうして一部だけとはいえ、ソフトタブ派に改宗したのか?と言いますと・・・
自分がハードタブで美しく整形したソースが、他の人のエディタでガッタガタになっているのを垣間見てショックを受けたからです。
ソース整形の美しさが、自分の環境だけの話だったことに愕然として、いっそソフトタブにしてしまえ!と思ったわけです。
というのは半分冗談で、実はPythonをやり始めたからというのが本当の理由です。
Pythonはタブ文字を8文字の空白として内部処理するのですが、空白とタブ文字が混在していると、不必要なミスを誘発しやすくなります。
インデントによって挙動が変わるという言語仕様上、タブは空白とタブ文字を混在させないほうが無難でしょう。
だったらいっそソフトタブの方が安全だと思ったわけです。
あ、ちなみにどうでいもいいことですが、タブの文字数は4文字派です。
投稿者 lepracaun : 2009年6月21日 08:23
![]()
トラックバック
このエントリーのトラックバックURL:
http://www.lepracaun.info/mt4/mt-tb.cgi/151