あるAnonymous Coward 曰く、Visual Studioではいままでタブ位置はユーザ定義可能であったが、VS 2010からはタブの位置とインデントの幅が同一になるよう固定される仕様となったそうだ(本家/.)。他のエディタでコードを確認する者にとっては不便なこともあった仕様でもあるが、「コマンドシェルではタブ位置は8文字であるため、アプリケーション間でコードの体裁を同一にするにはタブ位置をインデントとは別に設定できる必要がある」としてバグレポートにあがっているようだ。
そこまでこだわることでもない (スコア:3, すばらしい洞察)
コード階層の表現をタブの数で、
文字の位置合わせをスペースでやってりゃ問題になんてならないんだ
スペースの代わりにタブを使うやつが全ての元凶。
Re:そこまでこだわることでもない (スコア:2)
個人的には、スペースのみのが好きです。
混ぜてあるコードを見ると、EmacsWiki: Smart Tabs [emacswiki.org] にある漫画のなかでバットを持った人のように振舞いたくなることがあります。
Re:そこまでこだわることでもない (スコア:1, 興味深い)
> タブとスペースを混ぜるのは
元コメにもあるように、ただ単にタブとスペースをごっちゃにするんじゃなくて、
ブロックを表すにはタブを,それ以外の配置にはスペースを,と使い分けるんで
すよね。どちらか一方だけよりは情報量が多いので,よいと思います。
タブをスペースに変換するのはその逆よりも簡単だし,スペース派との人とは
うまくやっていけると思っているのですが。
Re: (スコア:0)
逆より簡単なのは認めるが、それでもソースのサイズによっては非現実的な作業量になる。そもそも、タブだってちゃんと使ってりゃ読むのに支障はないんだが、3人以上が関わると必ず混ざるから意思統一の必要が叫ばれているわけであって……
一行を80文字以内で想定してると、インデントだけではみ出してるやつがあるから困る。tab-widthを8とか4とかに指定してあるし。そもそも、プログラムのソースはやや左斜め上から右斜め下に向かって読むものだけど、綺麗なコードってのは、大体横方向の動きが少なく、縦に流れていくもんだ。そういう上品なものならインデント幅が大きくても見づらくはない。が、現実のソースは、これでもかってくらい入れ子にしてある癖にインデントだけで8文字ずつとか、読めるか、そんなもん。スペース2文字でおk。
Re: (スコア:0)
>読めるか、そんなもん。スペース2文字でおk。
禿げしく同意。
つまりMSはタブ幅2を推奨しているわけなんですね!
#んなわけあるかーー。
しかしえてして読みにくくなる根本原因は、多すぎるネストやスパゲッティプログラムだったりする罠。
Re: (スコア:0)
> 逆より簡単なのは認めるが、それでもソースのサイズによっては非現実的な作業量になる。
簡単に置換できると思うが。
#「簡単に痴漢できる」とか「性器表現で漏れまくり」とか・・・違うんです誤解なんですorz
Re: (スコア:0)
いや、一発で置換できるんならいいですよ。てか、「置換できる」ってことは崩れてないってことだから、むしろそのままタブでも文句はない。でも、長いソースだと混ざってるんですよ。
Re: (スコア:0)
タブ幅がスペース4文字でインデントが2文字だと、その手法だとどうやって表現するのであろう?
#業界で受け入れられてないオレオレルールの押しつけは現実的ではないよ。
#特にMSの様な独占企業ではね。
Re: (スコア:0)
Re: (スコア:0)
インデントはタブ1文字、インデント以外にはタブは使用しない。
Re: (スコア:0)
慣習的にタブの多くはスペース4文字が8文字。
(スペース2文字とか5文字というのも可能なはずだが滅多にやらない。)
インデントがスペース二文字分というのはそんなにめずらしいものでもない。
この時点で「常にインデント=タブ一文字」のオレオレルールは崩れる。
そもそも「タブが常にインデントと等しくなければならない」なんて、
普段は「何でもOKが売り」のMSらしくない設計というのもあるけど。
Re: (スコア:0)
個人的には、インデントの幅はソースを読む側で自由に設定できるほうが好みですが。
よく分からなかったのでやってみた (スコア:2, 参考になる)
「1ブロック下げ」=「1インデント」=「3文字分」=「スペース3つ」
「2ブロック下げ」=「2インデント」=「6文字分」=「タブ1つ」+「スペース1つ」
「3ブロック下げ」=「3インデント」=「9文字分」=「タブ1つ」+「スペース4つ」
なるほど、別々に設定できた方が楽しいですね。
というのは置いといて、「タブ幅:8、インデント幅:4」にしておくと、コマンドラインとか一般的なテキストエディタで開いても見た目が変わらないから良い、っちゅうことなんですね。
個人的には、「カーソルの右を1回押したら1ブロック下げ(インデント分)右へ移動する」「字下げ部分を越えてカーソルを上下に動かすときにカーソルが左右にぶれない」と言う対応が心地よいので、「タブ幅=インデント幅」派ですね。コードを読み書きする他の環境もなるだけそういう設定にしてあります。
むしろ状況ごとのスマートインデントの有効無効を…… (スコア:1)
スマートインデントは使いたけど、namespaceの後にはインデントして欲しくないの……なんの"{"か判断してインデントするようにして……
Re:むしろ状況ごとのスマートインデントの有効無効を…… (スコア:1)
そこは [Tools] - [Options] - [Text Editor] - [C#] (とかの言語) - [Formatting] - [Indentation] に Indent namespace contents とかを追加しろ、という形の要望になるのではないでしょうか。
現状でも、たとえば C# なら switch 文の case をインデントする/しないとかの設定が存在します。当然 {} を見た上でやってることですね。namespace はありませんが。
同一にしたいなら (スコア:0)
初めからタブを使わなければいいじゃない。
インデントにタブとスペースが混じってる状況が我慢できないので、なんでこんなものに拘るのか良く分からん。
Re:同一にしたいなら (スコア:1, おもしろおかしい)
Re:同一にしたいなら (スコア:1)
Visual Studio のタブ設定は、2008 以前でも「タブ文字を維持」「スペースに置き換える」の設定がありますので、既存コードで水増しされている可能性はあります。
タブをSPACEに変換するようになってないのか? (スコア:0)
set expandtab
set shiftwidth=4
set softtabstop=4
set tabstop=4
$
Re: (スコア:0)
$ cat ~/.vimrc
set noexpandtab
set shiftwidth=4
set tabstop=4
$
関連記事 (スコア:0)
国民投票: ソースコードのインデントは [srad.jp]
既存のプロジェクトを取り込んだ時に (スコア:0)
人によって設定が異なるので (スコア:0)