none
言語仕様書C# Language Specificationとの違い RRS feed

  • 質問

  • コーディングフォーマットというのか、コーディング体系というのか、

    MSDNに書かれているサンプルプログラムにおいては、

    method()

    {

     a = b;

    }

    というように"{"を使用するコーディングにおいて"{"が次の行に書かれているのに対して

    C# Language Specificationにおいては

    method(){

     a = b;

    }

    と、"{"は改行せずに書かれています。

    なぜ、マイクロソフトはこのように言語仕様書とは違う書き方をしているのか教えていただきたいです。

     

     

     

    2008年11月19日 12:30

すべての返信

  • 回答ではありませんが、単に好みの問題だと想像します。Visual Studioなんかは前者に整形しようとしますが(これ変更できるんでしたっけ?)、これが気持ち悪いと思う人もいらっしゃいます。主にどのような言語を扱われてきたのかによるんじゃないでしょうか? たまにこの手の話は盛り上がります。

    2008年11月19日 12:56
    モデレータ
  • 外池と申します。ものすごくドライな言い方をすれば、C#の仕様では、改行は空白文字と同じ意味しかありません。言語仕様書のなかでも、{ や } の前後で改行している例もあれば、改行していない例もあります。ということで「仕様」という点では「気にしない」が一番です。

     

    あとは、見易さや、趣味の問題かと。

     

    2008年11月19日 13:01
  • [オプション] ダイアログ ボックス - [テキスト エディタ] - [C#] - [書式設定] - [改行]

    の「中かっこの改行オプション」の「新しい行にメソッドの始めかっこを配置する」のチェックあたり

    2008年11月20日 9:56
  • おそらく言語仕様的な回答が聞きたいのではなく、「同じ Microsoft 内なのに揺らぎがなるのはなぜ?」 という文章そのものの質問だと思います。

     

    ご存知かと思いますが Microsoft には命名や用途的なガイドラインはあっても、このレベルの記述方法に関するガイドラインはありません。 また、

     

     三月猫 さんからの引用
    [オプション] ダイアログ ボックス - [テキスト エディタ] - [C#] - [書式設定] - [改行]

    の「中かっこの改行オプション」の「新しい行にメソッドの始めかっこを配置する」のチェックあたり

     

    というように自由に設定できるので、特に張り切って推奨する気はないのだと思います。
    質問の答えとしては、想像に過ぎませんが 「たまたま揺らいでしまっただけ」 だと思います。

    ただし MSDN ライブラリのコードや Visual Studio の初期設定を見る限り、推奨したい書き方はあるのかもしれません。

    あとは Microsoft のみぞ知るというところでしょうか。

    2008年11月20日 10:38
  •  三月猫 さんからの引用

    [オプション] ダイアログ ボックス - [テキスト エディタ] - [C#] - [書式設定] - [改行]

    の「中かっこの改行オプション」の「新しい行にメソッドの始めかっこを配置する」のチェックあたり

     

    知らなかったー。三月猫さん、ありがとうございました。

    困ってないところはスルーしてるなー、私。 というわけで私は「中かっこの改行オプション」はデフォルト派なんです。

    2008年11月20日 16:01
    モデレータ
  • おはようございます!(^^)!ふ~です。

     

    >なぜ、マイクロソフトはこのように言語仕様書とは違う書き方をしているのか教えていただきたいです。

    私も、行数を詰める派でしたが、標準(スマート)で、これを行うと、インデントが崩れて考えさせられました。

    結局、マイクロソフト社は、「ソース・コードの自動フォーマット」を実現する為に、効率の良いコーディングスタイル

    を標準にしたと考えられます。(C時代の一般的なレイアウトでの、自動フォーマットは難解が理由では?)

     

    ご参照資料 ソース・コードのインデントを手軽に整えるには?

    http://www.atmarkit.co.jp/fdotnet/dotnettips/193codefrmt/codefrmt.html

     

    全く関係ない話ですが、私は、電通国際情報サービスでC#のコーディングルールを考案した書籍

    ISBN4-87283-415-1 『超図解 C# ルールブック』 も時々参考にしています。

     

    2008年11月21日 1:45
  • 皆さん返事を下さりありがとうございます。

    IDEでフォーマットの設定が変更できることは知ってました。

     

    皆さんがおっしゃっているように決定事項たるものがないので、

    それほど重要なことではないということはうすうす思っておりました。

     

    しかし、私としてはやはりなぜこのフォーマットにしたのか理由が知りたいです。

    ですので、MSFT様からの返答が聞きたいです。

    2008年11月22日 6:21
  •  ritto さんからの引用

    しかし、私としてはやはりなぜこのフォーマットにしたのか理由が知りたいです。

    ですので、MSFT様からの返答が聞きたいです。

    その回答は得られないと思います。

     

    元の文書を書いた人はここのフォーラムを読んでいないはずですし、また、見ていたとしても答える義務はありません。

    また、MSDNフォーラムではありますが、コミュニティの1つとして運営されていることから、会社としての公式的な回答はありません。

     

    今回の質問が興味本位である、好奇心からであるならば、この回答のために開発チームの担当者を引っ張り出してくることもないと思います。

    ただ、その質問の回答が得られることで、Microsoftにとってよりよい開発に繋がるフィードバックが得られるのであれば助力を頂ける可能性はあります…が、残念ながら現時点ではその雰囲気を感じられません。

    2008年11月22日 15:21
    モデレータ
  •  Azulean さんからの引用

    その質問の回答が得られることで、Microsoftにとってよりよい開発に繋がるフィードバックが得られるのであれば助力を頂ける可能性はあります

    じゃぁ、「IDE のデフォルト設定は、どちらがいいか?」とか???

    2008年11月25日 12:36
  •  Jitta さんからの引用

    じゃぁ、「IDE のデフォルト設定は、どちらがいいか?」とか???

    おもしろそうなネタだけど、難しいネタでもありますね。

    結構好みが出そうな気がします。

    (行数が少ない方が読みやすいんだとか、開始と終了が同じインデントじゃないと読みにくいんだとか)

     

    仕様書を書いた人が少数であったとしても、IDEのデフォルトを決める過程のレビューか何かで議論していそうだしなぁ。

    その辺の裏事情を聞ける場ってのもまた難しい。

    2008年11月25日 14:03
    モデレータ
  • #本題からはずれます
    IDEのデフォルト設定で行番号の表示は有効にしておいて欲しいと思う事が多いです。
    2008年11月26日 15:05
  •  Azulean さんからの引用

    仕様書を書いた人が少数であったとしても、IDEのデフォルトを決める過程のレビューか何かで議論していそうだしなぁ。

    その辺の裏事情を聞ける場ってのもまた難しい。


    そういう“裏事情”を聞ける特権を持っているじゃないですか。Global Summit で聞いてきてください。
    (そういうつながりを持てるのが、MVP の特権でもあります)

    なので、「マイクロソフトに要望する」ということであれば、ちょっと違うかなと思いますが、MVP などの特別なパイプを持つ人の目にとめて聞いて貰うというのであれば、それも可じゃないかな、と思います。
    (もっと早くに上がってれば、Road Show で聞けたのですけどね)

     

    2008年11月27日 14:24
  •  Jitta さんからの引用

    そういう“裏事情”を聞ける特権を持っているじゃないですか。Global Summit で聞いてきてください。
    (そういうつながりを持てるのが、MVP の特権でもあります)

    残念ながら、Global Summitは仕事の関係で行けません。

    いつかは活用できるように職場を説得していかないとなぁ。。。

     

    今のところ、お役に立てないようで申し訳ないです。

     

    #MVPの特権として与れそうなところで還元できるものというのも考えていかないとなぁ。

    2008年11月27日 14:56
    モデレータ