C# の var におけるメリット・デメリット


C# 3.0 から導入された var。これは積極的に使うべきか、使うべきでないかでしばしば論争が繰り広げられる。


個人的には、かつては ほぼすべての変数で var を使っていたものだが、最近は LINQ やラムダ式以外では控えるようにしている。もちろん、大前提としてチームのコード規約があるのだが、個人的な意見としてもすべて var で宣言するのは控えるべきだと思うようになってきた。

var は Variant 型ではない。

VB6 時代からのプログラマーの中には、VB のバリアント型であると思っている者がいる。しかしこれは違う。var 宣言は、あくまで書きやすくするため、表記上のキーワードでしかないし、コンパイル時に型チェックがされるから、何でもかんでも入る「魔法の箱」ではない。
したがって「型がわからなくなるから使うな」という理由から使用を控えるべきだと主張している者がいたら、var 自体の理解が十分でない可能性もある。

長いクラス名や LINQ や ラムダ式では使うべき

var は、確かに右辺から型を推測するのだが、自作の長いクラス名や、LINQ やラムダ式で値の抽出を行いたい場合には、宣言時に厳密に型を書く必要はないのではないかと思う。だからこういう場合は使うべきだと思う。
実際、LINQ やラムダ式が登場したからこのキーワードが出てきたようなものだからだ。宣言時に長くタイプする手間を省けるし、コンパイラが型を自動でセットしてくれるので、宣言行を手早く書いて、次の処理を書きたいものだ。

ソースが綺麗になる

個人的な意見としては、すべての宣言を var で済ませた場合、変数宣言や条件式などのインデントが揃って綺麗に見えるのは好き。

なぜ var を使うのか?

すべて var で宣言するのもいいと思うのだが、この機能はそもそも Visual Studio のエディタ機能にかなり依存しているように思う。だから、文字として左辺をそれぞれの型にするというのはそれなりにメリットはあると思う。
この宣言に関しては、どういう場合に使うのかを厳格に守れば、それがルールとなり、ソースの可読性は保たれると思う。

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で一部の図形だけ固定する