パスワードを忘れた? アカウント作成
187713 story
プログラミング

Visual Studio 2010ではタブ幅とインデント幅が同じになる 23

ストーリー by hylom
インデントにタブを使わなきゃいいんじゃね? 部門より

あるAnonymous Coward 曰く、

Visual Studioではいままでタブ位置はユーザ定義可能であったが、VS 2010からはタブの位置とインデントの幅が同一になるよう固定される仕様となったそうだ(本家/.)。

他のエディタでコードを確認する者にとっては不便なこともあった仕様でもあるが、「コマンドシェルではタブ位置は8文字であるため、アプリケーション間でコードの体裁を同一にするにはタブ位置をインデントとは別に設定できる必要がある」としてバグレポートにあがっているようだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2010年01月27日 15時20分 (#1709384)

    コード階層の表現をタブの数で、
    文字の位置合わせをスペースでやってりゃ問題になんてならないんだ

    スペースの代わりにタブを使うやつが全ての元凶。

    • タブとスペースを混ぜるのは一般的なんでしょうか。
      個人的には、スペースのみのが好きです。
      混ぜてあるコードを見ると、EmacsWiki: Smart Tabs [emacswiki.org] にある漫画のなかでバットを持った人のように振舞いたくなることがあります。
      親コメント
      • by Anonymous Coward on 2010年01月27日 17時36分 (#1709463)

        > タブとスペースを混ぜるのは

        元コメにもあるように、ただ単にタブとスペースをごっちゃにするんじゃなくて、
        ブロックを表すにはタブを,それ以外の配置にはスペースを,と使い分けるんで
        すよね。どちらか一方だけよりは情報量が多いので,よいと思います。

        タブをスペースに変換するのはその逆よりも簡単だし,スペース派との人とは
        うまくやっていけると思っているのですが。

        親コメント
        • by Anonymous Coward

          タブをスペースに変換するのはその逆よりも簡単だし

          逆より簡単なのは認めるが、それでもソースのサイズによっては非現実的な作業量になる。そもそも、タブだってちゃんと使ってりゃ読むのに支障はないんだが、3人以上が関わると必ず混ざるから意思統一の必要が叫ばれているわけであって……

          一行を80文字以内で想定してると、インデントだけではみ出してるやつがあるから困る。tab-widthを8とか4とかに指定してあるし。そもそも、プログラムのソースはやや左斜め上から右斜め下に向かって読むものだけど、綺麗なコードってのは、大体横方向の動きが少なく、縦に流れていくもんだ。そういう上品なものならインデント幅が大きくても見づらくはない。が、現実のソースは、これでもかってくらい入れ子にしてある癖にインデントだけで8文字ずつとか、読めるか、そんなもん。スペース2文字でおk。

          • by Anonymous Coward

            >読めるか、そんなもん。スペース2文字でおk。
            禿げしく同意。
            つまりMSはタブ幅2を推奨しているわけなんですね!
            #んなわけあるかーー。

            しかしえてして読みにくくなる根本原因は、多すぎるネストやスパゲッティプログラムだったりする罠。

          • by Anonymous Coward

            > 逆より簡単なのは認めるが、それでもソースのサイズによっては非現実的な作業量になる。
            簡単に置換できると思うが。

            #「簡単に痴漢できる」とか「性器表現で漏れまくり」とか・・・違うんです誤解なんですorz

            • by Anonymous Coward

              いや、一発で置換できるんならいいですよ。てか、「置換できる」ってことは崩れてないってことだから、むしろそのままタブでも文句はない。でも、長いソースだと混ざってるんですよ。

    • by Anonymous Coward

      タブ幅がスペース4文字でインデントが2文字だと、その手法だとどうやって表現するのであろう?

      #業界で受け入れられてないオレオレルールの押しつけは現実的ではないよ。
      #特にMSの様な独占企業ではね。

      • by Anonymous Coward
        リーナスみたくGNUコーディング標準を焼き捨てればいいんじゃね?
      • by Anonymous Coward
        インデントがスペースで~文字分だというのがそもそも間違いだと言っているのではないでしょうか。
        インデントはタブ1文字、インデント以外にはタブは使用しない。
        • by Anonymous Coward

          慣習的にタブの多くはスペース4文字が8文字。
          (スペース2文字とか5文字というのも可能なはずだが滅多にやらない。)
          インデントがスペース二文字分というのはそんなにめずらしいものでもない。

          この時点で「常にインデント=タブ一文字」のオレオレルールは崩れる。

          そもそも「タブが常にインデントと等しくなければならない」なんて、
          普段は「何でもOKが売り」のMSらしくない設計というのもあるけど。

          • by Anonymous Coward
            まあどっちでもいいですが、少なくとも複数の人がソースを見たり書いたりする環境では、エディタのタブ幅設定を変えるとレイアウトが崩れるような書き方は避けるべきでしょう。そういう意味ではインデント=タブというのは理にかなってるし、タブを使わずに全てスペースだけでやるってのもありかな。

            個人的には、インデントの幅はソースを読む側で自由に設定できるほうが好みですが。
  • by s02222 (20350) on 2010年01月27日 15時59分 (#1709409)
    何が問題になっているのかちょっと分からなかったので現物触ってみました。 試しに、タブ幅:5、インデント幅:3にという変態設定で、VS2008に自動で字下げをさせると、

    「1ブロック下げ」=「1インデント」=「3文字分」=「スペース3つ」
    「2ブロック下げ」=「2インデント」=「6文字分」=「タブ1つ」+「スペース1つ」
    「3ブロック下げ」=「3インデント」=「9文字分」=「タブ1つ」+「スペース4つ」

    なるほど、別々に設定できた方が楽しいですね。

    というのは置いといて、「タブ幅:8、インデント幅:4」にしておくと、コマンドラインとか一般的なテキストエディタで開いても見た目が変わらないから良い、っちゅうことなんですね。

    個人的には、「カーソルの右を1回押したら1ブロック下げ(インデント分)右へ移動する」「字下げ部分を越えてカーソルを上下に動かすときにカーソルが左右にぶれない」と言う対応が心地よいので、「タブ幅=インデント幅」派ですね。コードを読み書きする他の環境もなるだけそういう設定にしてあります。
  • スマートインデントは使いたけど、namespaceの後にはインデントして欲しくないの……なんの"{"か判断してインデントするようにして……

  • by Anonymous Coward on 2010年01月27日 15時13分 (#1709378)

    初めからタブを使わなければいいじゃない。
    インデントにタブとスペースが混じってる状況が我慢できないので、なんでこんなものに拘るのか良く分からん。

  • by Anonymous Coward on 2010年01月27日 15時46分 (#1709398)
    $ cat ~/.vimrc
    set expandtab
    set shiftwidth=4
    set softtabstop=4
    set tabstop=4
    $
    • by Anonymous Coward

      $ cat ~/.vimrc
      set noexpandtab
      set shiftwidth=4
      set tabstop=4
      $

  • by Anonymous Coward on 2010年01月27日 16時12分 (#1709421)
  • by Anonymous Coward on 2010年01月27日 20時07分 (#1709507)
    インデントが崩れなきゃどうでもいいや
  • by Anonymous Coward on 2010年01月30日 16時58分 (#1711190)
    プロジェクトやソリューションのプロパティにすればいいのにと思いますが、2010ではどうなんでしょうねぇ。
typodupeerror

開いた括弧は必ず閉じる -- あるプログラマー

読み込み中...