暗黙的型付け(その3)
http://blogs.wankuma.com/rti/archive/2007/12/27/114850.aspx
乗り遅れてしまったので、ブログでこっそり自分のスタンスを、「コードを読むときにどうしてたか」思い出しながら・・・
コードを読むときは、そのコードが何を実現しているかが重要なので、何が存在して、それが何をしているのかを気にする。
そのときに、変数がどんな存在なのかは気にするが、どんな型なのかは必要だと思うまで気にしない。
どんな型なのかよりも、変数名で決定づけられている、「それがどんな存在なのか」の方が重要で、型は後で知りたければ必要に応じて開発環境が教えてくれるので、型推論を利用する事に違和感は特にないし脳内VMが必要だとも思わない。(5年くらい前は、「開発環境がある前提で考えるなんてどうなんだそれ。」と思っていた。)
型推論を利用したところで、結局、コンパイル時には型が決定されるわけなのだから(これがあるから、型は後で知れば良いと思える。)、普通に型を書いた場合とあまり違いがあるようには見えない。むしろ、型の情報が隠れることで変数そのものが、どんな存在なのかがクローズアップされる。
結果的に、文脈を追っている過程で型情報が目に入らないので、いちいち思考停止しないですむようにも思える。
とはいえ、別に普段から知りたいときに後で知ればよいと思って読んでいるので、気のせいかもしれないけれど。
もちろん、型推論で決定された型が利用したい型ではない場合は、型を明示的に宣言すればよい。
まぁ、でも、今のところ型推論を利用する時は、過去のエントリにあるような匿名型を利用するときくらいかなぁ。
関連する過去のエントリ
読みやすいコードを書くために匿名型を利用する。
http://d.hatena.ne.jp/NAL-6295/20070915/p1
読みやすいコードのためにLINQを利用する。
http://d.hatena.ne.jp/NAL-6295/20070920/p1