型推論とは
いまさらわざわざ書くことではないですが、一応書いておくと**「代入式の右辺からコンパイラに型を推論させる(暗黙の型指定)」**ってやつですね。
わざわざString(string)とかInteger(int)とかって書かずに良くなります。
まあ処理によってはコンパイラさんがうまく判断できずにObjectってされちゃったりもするので状況によっては使えませんが、使えるところでは使っていくべきものですね。
もちろん、可読性に影響が出るのであれば避けるべきですが、ここでは可読性については考慮しないものとして書きます。
string value1= "型指定";
var value2 = "型推論";
Dim value1 As String = "型指定"
Dim value2 = "型推論"
「VB.NETは型推論すべきなのか」とは
VB.NETでも上記のコードのように型推論させることができます。
なのになぜこんなことを書いているかというとMicrosoftのコーディング規約にVB.NETでは型推論について言及がされていないからです。
C#.NET: C# のコーディング規則 (C# プログラミング ガイド)
VB.NET: Visual Basic のコーディング規則
うーん、Microsoftとしてはなにか思惑があるのでしょうか。
これを見て以前はVB.NETを書く時は意図的に型指定をきっちり書いていましたが、めんどくさい、めんどくさい…
型によっては横にも長くなってださいし…
私は最近、VB.NETを書く機会があった時はむしろ積極的に型推論を書くようにして、なにか不都合がでるか気にしてみてますが、今のところは特にありません。
C#.NETと中間コードでも比較してみれば差(もしくは差がないこと)が分かるのかな?
「VB.NETは型推論すべきなのか」
私の意見としてはやはり型推論すべきだと思います。
型指定した場合はVB.NETの方が「Dim」、「As」といったワードを余計に多く書くことになります。
しかしながら型推論をした場合は「var」と「Dim」という差はあれど打つ文字数は同じになるのでスッキリして見えるように感じます。
打つ文字数が少なく済むならそれに越したことはありません。
気になる点
Golang等の他の言語も「var」であることを考えると「Dim」であることはうーん…って感じです。
まあVB.NETは他と比べると独自路線なのでこれに限った話ではないので今更ですが。
他の技術者が型推論を知らない、VB.NETで型推論できることを知らない可能性がある、という点もあります。
皆が皆、最初に学んでからさらに学ぼうという人ばかりではありません。
特にVB.NETはVB6やもっと前からやってきている人も中にはおり、そういった人にとっては混乱の種になるかもしれません(年代的に管理職になってそうですが)。
あとがき
いろんな人の意見を聞いてみたいところです。