読者です 読者をやめる 読者になる 読者になる

ぺぷしのーげん

アプリケーションエンジニア(C#er)による雑記ブログ

C#でもvarを使う時代になった|MSDNでも使用推奨

f:id:hazakurakeita:20151107223128p:plain

暗黙的に型指定するvar。「なんでも入れることができる型」という表現をされてしまったせいで悪しき型というイメージが先行してしまいました。しかし、時代はvarなのです。

 

なんでも入れることができる型ではない

たしかに何でも入れることができる型という説明は楽です。しかし正確には、コンパイル時に暗黙的に型を推論してくれるというものです。何でも入れることができる型ではないのです。もし何でも入れることができる型ならば、次のようなコードもアリということになってしまいます。

    var str = "text";
    str += 50;
    str = new string[] {"a", "b", "c"};

 もう何でもアリ状態。でも当然こんなことは許されません。コンパイル時に型が固定されるので、何でも入れることができるわけではないのです。

 

分かりにくいから使うなという主張

varは可読性に問題がある。分かりにくい。何でもありになってしまう。こんな主張から「使うな」という人は未だ多くいます。しかし、今やそのようなことを言うひとは古いエンジニアとなりつつあります。新しい言語ではvarは決してネガティブではなく、むしろ積極的に使用されているからです。

その代表例がSwift。2014年に発表されたこの言語は、なんとvarでしか変数を定義できません。例えばstring型で変数を定義したいときは、わざわざ以下のように記述しなければならないのです。

    var str: string = "text"

 この記述方法に最初は驚かされます。このため、Swiftでは定義がvarで占められます。

 

ではどうやって使うのか

何の型か分からないときに使うものという勘違いが広まっています。でもよく考えてみてください。型が分からない変数を定義すること自体おかしな話です。かなりマズイコーディングなのではないでしょうか。

じゃあ、どういったときに使うのかと言うと、その型が右辺から明らかである場合に使用するというのがMSDNで推奨されています。例えば下記のように。

    var str = "text";
    var val = 1000;
    var array = new string[] {"a, "b", "c"};

 右辺から型が明らかなので、varで良いという考えです。明らかなのにvarと書くのは手抜きだという考えも未だ強く残っています。しかし、型が分からないからvarを使うというほうがよっぽど手抜きですよね?

https://msdn.microsoft.com/ja-jp/library/ff926074.aspx

 

今年から会社でもMSDNの規則に則るという方針になりました。そのとき、このvarの使用には驚きました。しかし、その後Swiftを勉強して一気に慣れました。今後は積極的にvarを使っていこうと思います。海外のサイトやブログだとC#でも積極的にvarが使われていますね。ちょっと日本のほうが遅れているような気がします。

 

おしまい。