クラウドコンピューティング ~ EC2、Mosso、GoGrid
クラウドコンピューティングのプロバイダーであるEC2、Mosso、GoGridの新しいユーザーエクスペリエンスと、それぞれの機能の違いについて学びます。
作者 Jonathan Allen, 翻訳者 編集部 投稿日 2008年6月8日 午後6時32分
C#3は「var」というキーワードを追加した。これは、コンパイラがどの型の変数を使用すべきか明確に決定できる場合に、ローカル型の推論を可能にする。しかし、それをいつ使用すべきかに関しては議論が分かれている。
IDEツール会社であるJetBrainsの(source)Ilya Ryzhenkov氏は、varを使用するいくつかの利点をまとめている(source)。
- より優れたローカル変数の命名をもたらす。
- より優れたAPIをもたらす。
- 変数の初期化をもたらす。
- コードノイズを取り除く。
- usingディレクティブを必要としない。
RSS BanditのDare Obasanjo氏は同意していない。彼は、自身のオープンソースプロジェクトに不利な変化と思えることを認識した後、Ryzhenkov氏の見解に対する返答を(source)書いた。彼は次のように反論している。
これらの「利点」のほとんどが、どれほど主として文体的であるかというだけでなく、どれほど互いに矛盾しているかを考えると面白いです。たとえば、varが「より優れたローカル変数の命名」をもたらすという主張は、実際は開発者に長いハンガリースタイルの変数名を使用させることを意味します。さらにおかしなことに、こうした長い変数名は、変数が宣言されると現れる1つの型名と比べて、変数が使用されるどの場所にも現れるため、全般的にコードにノイズを加えます。varが「より優れたAPI」をもたらすという主張は、長くてより記述的なプロパティ名(たとえば、XmlNode.NameではなくXmlNode.XmlNodeName)を使用せざるを得ない場合の改善点であるという主張であり、このテーマの別のバリエーションです。変数名で型情報をエンコードすることは最低だということを誰かがReSharper派に伝えるべきです。それが、私たちが第一にC#のような強く型付けされたプログラミング言語を使用する理由です。
もう1つ、varが変数の初期化を促進するという主張は、C#コンパイラがすでにそれを実施していることを考えると、おかしいです。さらに重要なことに、使用前に変数をnullに初期化する一般的なシナリオが、varキーワードによってサポートされていません。
Dare氏は、公式のC#言語リファレンスの(source)一節で彼の主張を支持している。
varを過度に使用すると、ソースコードを他の人が読み取りにくくなることがあります。varは、必要なときだけ、つまり変数を匿名の型1つまたは匿名の型の集合を格納するために使用する場合にのみ使うことをお勧めします。
varが可読性を低下させるという訴えは、すべての人に共通するわけではない。Arnon Rotem-Gal-Oz氏は(source)次のように記述している。
コードの可読性に関する主張については、私は、メソッドを短く意味のあるメソッドと変数名に保つと同時にテスト(コードがどのように動作するかを理解するのに実際に役立つもの)をサポートするような、より強力なメソッドに焦点を合わせることのほうを望みます。それはさておき、本当にどうしても可読性が必要であるならば、varキーワード上にマウスを置けばresharperが型を教えてくれます。
Chris Sutton氏はさらに一歩踏み込んでいるようで、型は関係ないということを(source)ほのめかしている。
t型がわからない場合にのみvarを使用すべきであるという案が浮かび上がりました。この点で、私の意見と使用法は異なります。次のコード部に注目してください。
var procs = from p in ServiceController.GetServices()
where p.Status == ServiceControllerStatus.Running
select p;
procs.ToList().ForEach(p=> Console.WriteLine(p.ServiceName));
procsは確実にIEnumerableですが、私には関係のないことです。私が第一に気に掛けることは、procsがリストであり、リスト内の各アイテムにServiceNameというプロパティがあるということです。基盤となる型はコンパイラにとっては重要ですが、コードを読み取らなければならない人はコンパイラではありませんよね?
原文はこちらです:http://www.infoq.com/news/2008/05/CSharp-var
MySQLならNRI ~ MySQL Special Days ~
先着5社まで無料でオープンソースソフトウエアのサポートを提供
クラウドコンピューティングのプロバイダーであるEC2、Mosso、GoGridの新しいユーザーエクスペリエンスと、それぞれの機能の違いについて学びます。
パート2では、ベンチマークの結果を検証するために用いられるテクニックについてさらに深く見ていきたいと思います。最後に、「なぜプロセッサが異なるとロックのコストも大きく異なるのか」と言う真の疑問に答えます。
本稿では、Stefan Tilkov氏が「RESTful」な設計であると主張するアプリケーションに見受けられる最も一般的なアンチパターンのいくつかについて説明し、それらを避けるための方法を提案しています。
Sven Efftinge氏、Peter Friese氏とJan Köhnlein氏が、MDDを取り入れて成功した経験から、ベストプラクティスの解説を行います。
Our panel of leading experts explores some of the challenges and thought processes that go into making their apps as scalable and performant as possible.
この記事は、Spring 2.5で導入されたアノテーションを探究する3部作の第2弾です。Web層におけるアノテーションのサポートを扱います。最後の論文では、統合と検査で利用できる追加機能を説明する予定です。
私は「浴衣」を着てパーティーに参加したことで、たくさん声を掛けていただけました。 そこで感じたことは、このカンファレンスが人との繋がりを生み出し、また言葉の壁を越えて積極的に交流する場所であることです。民族衣装はそれらを助けてくれるものでした。きっとこの交流が、新たなムーブメントをアジア圏の仲間たちにも与えてくれると確信しています。
No comments
返信