2009年10月24日

【var変数】 varのメリット

今回は、なぜvarを使うのか?どのような利点があるのか?を考察します。
実を言うとvarの使い方は、絶対の正解があるわけではないので少し難しいところです。
主な使い方を順番に見ていきましょう。

(1)組み込み型に対してvarを使う
class Program
{
    static void Main(string[] args)
    {
        // intの代わりにvarを使う
        var num = 100;
        // stringの代わりにvarを使う
        var str = "文字列";
    }
}
(2)クラス名に対してvarを使う
class Program   
{   
    static void Main(string[] args)   
    {   
        // List<int>の代わりにvarを使う
        var list = new List<int>();
        // StringBuilderの代わりにvarを使う
        var builder = new StringBuilder();
    }   
}
(3)匿名型に対してvarを使う
class Program
{
    static void Main(string[] args)
    {
        // 匿名型にvarを使う
        var Gogh = new { Name = "ゴッホ", Age = 37, Country = "オランダ" };
        var Monet = new { Name = "モネ", Age = 86, Country = "フランス" };
    }
}
匿名型というのは、クラス名を持たない匿名クラスのことです。
読み出し専用(getのみ)のプロパティだけで構成されるという特徴があります。
この匿名型を宣言する場合だけは、必ずvarで変数を宣言しなければなりません。
ここだけは、議論の余地が無く誰もが同じ書き方になります。

ただ(2)のクラス名の代わりにvarを使う書き方や、
(1)の組込型の代わりに使う書き方は人によって意見が大きく割れるところです。
class Program   
{   
    static void Main(string[] args)   
    {   
        // 通常の定義方法
        int a = 100;
        string b = "文字列";
        double c = 1.00d;
        
        // 組み込み型の代わりにvar
        var a = 100;
        var b = "文字列";
        var c = 1.00d;
    }   
}
組み込み型の代わりに使うvarは、結構抵抗がある人が多いみたいです。
今までの書き方に慣れている人にとっては、何のメリットがあるのか疑問に思いますよね。
メリットとしては、変数がvarで統一されてる方が変数名の位置が揃って見えるので、コードがスッキリ見えるところですね。
デメリットは、パッとコードを見た時に右辺の値を見ないと型が分からないのが若干手間に感じるところです。
あと一番大きいのが、今までの見慣れた書き方と掛け離れるって事だと思います。
個人的な考えでは、自分しか読まないコードなら組み込み型にvarを使うのもありだと思うのですが、
会社などチームで開発するなら、今のところは使わない方が無難かなと思います。(今後考えが変わる可能性はありますが)
class Program   
{   
    static void Main(string[] args)   
    {   
        // 通常の定義方法
        List<int> list = new List<int>();
        Dictionary<int, string> dict = new Dictionary<int, string>();
        StringBuilder builder = new StringBuilder();

        // クラス名の代わりにvar
        var list = new List<int>();
        var dict = new Dictionary<int, string>();
        var builder = new StringBuilder();
    }   
}
クラス名の代わりにvarを使うのはどうでしょうか?
通常の定義方法では、変数定義とnewの後で2箇所同じクラス名が出てくるので少し冗長な感じを受けますが、varの方はコードがスッキリして、メリットが際立ちます。
右辺を見れば、クラス名が書かれてますからデメリットもあまり目立たないような感じがします。
個人的に、この書き方は使っていった方が見やすくて良いかなと思うのですが、どうでしょうか。


いずれもvarの良し悪しは慣れによるところが大きいようですので、今後は全てvarで統一するような時代が来るのかも知れません。
他の方のブログとかを見てる感じでは、使っている内に違和感がなくなって考えが180度変わったという方が結構居ました。
変な先入観を持たずに、しばらく使ってみて判断するのが一番なのかもしれません。

var変数の先頭記事へ var変数の次の記事へ
タグ:var変数
posted by 吾一 at 23:26| 3. var変数 | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。