ブロックになってないステートメントが展開されちゃう

ちょうど1年前のエントリもソースコード整形に関する話だった。Visual Studio 2005 では、ソースコード整形に関するオプションが結構豊富になっている。*1
この中の設定の1つ「1行に収まっている文は展開しない」*2という項があり、たとえばプロパティを、

  int PropertyName
  {
    get
    {
      return propertyValue;
    }
  }

というようにインデントする設定にしていた場合、これを手入力によって

  int PropertyName
  {
    get { return propertyValue; }
  }
や
  int PropertyName { get { return propertyValue; } }

とタイプした場合に、自動的に最初の状態に変更するかどうかを設定できるというものだ。単純に { と } が同じ行にある場合、その中身を2行以上に分解しない機能となっている。これ、結構よい機能だと思うし ON にしているのだけど

if (expr) break;

みたいな内容は、{ も } も含まないので展開されて、

if (expr)
  break;

になっちゃうんですよね。1行で記述する場合には、

if (expr) { break; }

と書かないといけない。これが個人的にはちょっと不満かな…。

*1:開発初期段階では設定項目数が現在の数十倍あり、設定項目の量の多さと複雑さから現在の状態にスリムアップされたらしい

*2:正しい名称わすれた、あとで修正する