Re: C#討論: いつvarを使用すべきか?

C#討論: いつvarを使用すべきか?

ちょっと古い記事ですが、なかなかおもしろいので引っ張り出してきました。
ReSharperを入れた環境で開発してると、変数の宣言をvarにしろって言ってきます。
その理由がここに埋め込まれています。


JetBrains(ReSharperを開発している会社)のIlya Ryzhenkov曰く、varを使うことで、「よりよい変数名がつけられる」と言っています。
どういうことかというと、変数の宣言に型名を明示することによって、コンテキストができてしまうため、変数名が省略されてしまうのではないかと言っています。
Blogでは、次のように書かれています。
型名を明示して変数を宣言する時には、次のように記述してしまう。

IUnitTestElement current;

でも、varを使うと、

var currentElement;

のように、より明確な変数名を宣言するのではないだろうか?

これに対して、RSS BanditのDare Obasanjoが言うには、

XmlNode.Name

というプロパティ名ですでにわかりやすいのに

XmlNode.XmlNodeName

のように、冗長なXmlを記述させるつもりか?とおっしゃっています。


MSDNの記述を見てみましょう。

var (C# リファレンス)

var を多用すると、他の人がソース コードを読みにくくなる可能性があります。var を使用するのは、匿名型や匿名型のコレクションを格納するのに変数を使用するときなど、必要な場合に限定することをお勧めします。

「varを使いすぎるな。」と書いています。


元々varは、LINQのために生まれたと言っても過言ではありません。その副産物として、このような議論が起きることになっています。私の意見はというと、基本的には匿名型で使用するのがいいと思っています。型が明示できるときに、明示しない必要はないと考えています。
(あ、サンプルとか面倒な時には使うこともあります。)