関数の中など、読みやすいように字下げをするのが一般的だと思うのですが、あれは「タブ」で行う方がいいのでしょうか。それとも「半角スペース」で行う方がいいのでしょうか。もし半角スペースなら、基本は何個あけますか?一般的な作法として、みなさんどうしておられるのかお聞きしたいです。
タブで行なうのが一般的です。
と言いますのは、タブの方がファイルサイズを減らせる為です。
インタプリタ型の言語である以上、これは未だに重要視されています。mod_perl などはともかく。
私が今まで見てきた限りでは「タブ = 半角スペース 8 つ分」というのが多かったですね。
次が 16、その次が 4 です。その前提で以下に話を移します。
見かけ上は同じに見えますが、半角スペースでタブと同じ見た目にしようとすれば、
4 文字 ~ 16 文字 (= バイト) を消費する事になります。
これはタブを使うよりも 4 ~ 16 倍の記憶領域を消費するという事です。
また、そもそもコーディング時にそんな馬鹿馬鹿しいスペースキーの連打もしていられません。
もしも、その様な事を要求するクライアントがいたとすればそちらの方がおかしいでしょう。
無駄に開発時間が延びる為、それは人件費の増加に繋がります。
(タブにしておいて、後から半角スペースに置換という事もできますが)
ただ、タブというのにも問題はありまして、見る側の設定如何でその見え方が変わる事があります。
ですので、「タブを半角スペース何個分としてコーディングするか」は最初に決めておく必要があります。
どっちでもいいというのがほんとのところです。
とにかくタブとスペースを混在させないこと。
複数人での開発環境ではスペースで字数を統一するのがよいのでは。
ちなみに最近のVisual Stdio .Netなどでは勝手にインデントされるようになっているので、もう意識することもないです。
実際のファイルにはスペースで埋め込まれています。
勝手にインデントされる環境もあるんですね。ありがとうございます。
私もタブ派で、半角スペース4つでコーディングするのが好みです。
確かに、タブの表示幅が定義できないメモ帳などがあると見づらくなりますが、半角スペースでインデントされると個人的には非常に見づらいです。
#業務では、事前にルールを決めると思いますが、スペースでのインデントを指定されたことは未だかつてありません。
また、余談になりますが、pythonはコンテクストをタブによるインデントで判断するように設計されています。
個人的にはタブをお奨めします。
タブで、半角四つに設定という事ですね。ありがとうございます。「pythonはコンテクストをタブによるインデントで判断」というのは、まったく触った事がないので、面白いと思いました。調べてみます。
私はtabを使ってます。タイプが楽なので。
tab幅は半角スペース4個分に設定しとります。
ターミナルでvi使う事が多いので、8だと横に延びすぎて不便。
#このあたりは好みの問題でしょうな。
逆にWindowsでのプログラミングならば、tab幅が8でも変わらない
気がします。結局、使ってる環境次第ですね。
あとは規約でどうしてるかどうか。
業務で行ってる開発ならば、コーディング規約あるでしょうし。
環境次第という事ですね。個人的な話をしますと、coLinuxでWindows内に環境を作って、そこで勉強していこうと思っていて、viを使うつもりですので、参考になります。ありがとうございます。業務ではまったく…。むしろ業務でやらせてほしいくらいですが。
字下げ(タブ、半角スペース)は自分が見やすいならばどのようにしても良いと思います。
http://astyle.sourceforge.net/
のようなツールを使い、提出先が好むスタイルに変換してしまえばよいと思います。(Ruby,Perlは対応していませんが)
http://www.6809.net/tenk/html/lib/doc/astyle_j.htm
にインデントのスタイルが名前と共に例示されています。
私はRubyを書くときは情報量を集約するため、横スクロールを極力しないため、タブキーは押しにくいため 「半角スペース1つ」で行っています。
昔は1タブ4文字でした。ですが、4文字でもフォントの設定により横スクロールが面倒だと感じたため今の状態に落ち着いています。
フォーマッターというんですか、こういうものもあるんですね。まったく知りませんでしたので、非常に勉強になります。横スクロールをできるだけしないというのも、なるほどという感じです。ありがとうございます。
Tab でも スペース でもかまわない.
私は Editor で Tab(4) に設定しています.
Tab(8) では Indentが 深くなったときに 右に行き過ぎる.
エディタで設定という事ですね。感謝。
なるほど、スペースはバイト数を消費してしまうんですね。それは考えていませんでした。あと、やっぱりスペース何度も打つのはめんどいんですね。ありがとうございます。