http://blogs.wankuma.com/rti/archive/2007/12/27/114850.aspx
暗黙的型付け(その3)
http://blogs.wankuma.com/rti/archive/2007/12/26/114624.aspx
暗黙的型付け(その2)
http://blogs.wankuma.com/rti/archive/2007/12/25/114456.aspx
暗黙的型付け
今回は、マメにコメントに返信をしたので、終息に向かっているように感じます。
しかし、もう1回だけネタにします^^;
今回は、var を
使えるところは使う理由
についてに論点を絞ってみたいと思います。
int i = 0;
Int32 i = 0;
Dim i As Integer = 0
var i = 0;
int 型であることを表現する方法は、いろいろあります。
var i = 0 も int 型であることを表現する方法の一つだと考えることはできないでしょうか?
僕は英語のできない人ですが、Book と言われて本と日本語に訳した後に本のイメージが頭に浮かびます。
英語のできる人は、Book と言われるだけで本のイメージが頭に浮かびます。
var も似たようなもので、慣れてしまうと、そこに紛れもなく型が存在していることを意識できるようになります。
float f = 1f;
var f = 1f;
例えば、上記のコードの前者は、float と書くことと 1f と書くことの2箇所で、f が float 型であることを表してます。
後者は、1f と書くことだけで float 型であることを表しています。
これは、以下のコードの HogeHoge 型を var にすることと何ら変わりはありません。
HogeHoge hoge = new HogeHoge();
次に、僕が for (var i = 0; と書く理由を、もう少し詳しく説明します。
var i = 0;
for (var i = 0; ・・・
どちらも i という変数を定義して 0 という定数を代入しているだけの式です。
一方が for のカウンタとして使われることを除いては、という前提が付きますが。
では、以下のコードはどうでしょうか?
var i = 0;
while (i < count) {
++i;
}
カウンタだから、var を使うべきではありませんか?
仮に、使っても良いなら、何故 for だけ特別に駄目なのでしょうか?
・・・についてご意見を伺いたいですね。
もう一つ、前回の記事に書いた部分を再度アップします。
private int unitPrice;
private int quantity;
:
private int GetAmount1() {
return unitPrice * quantity;
}
private int GetAmount2() {
var u = unitPrice;
var q = quantity;
return u * q;
}
GetAmount1 のような記述は許せて、GetAmount2 のような記述はすべきではないという明確な理由が僕には未だにわかりません。
ちなみに、皆さんが懸念されている「型を意識しない新人が増える危険性」についてですが、これは僕も同意見です。
でも、少なくとも僕にとっては、それが var を使ってはいけない理由にはなりません。
他の理由としては、考え方の順番通り記述できる点も好きですね。
1.金額を格納する変数を作ろう→(var)
2.名前は何にしよう→(var amount)
3.型はどうしよう→(var amount = 0m;)
また、変数の定義が綺麗にまとまるというのも好きですね。
HogeHoge hoge = new HogeHoge();
int i = 5;
float f = 1f;
var hoge = new HoegHoge();
var i = 5;
var f = 1f;
まあ、使う理由としては弱いですか・・・
#満員御礼!w