はかせのラボ

私の頭の中を書いていく雑記ブログです

プログラミング 型推論

あいさつ

どうも、はかせです。
今日も体調が(ry

ということでよく話題に上がる
型推論について私の考えを書きたいと思います。

型推論

名前の通り型を推論することです。
例えば

float hoge = 1.0f;

hogeというfloat型の変数に1.0fという値を入れています。

ただこれ少し冗長に思いませんか?
1.0fはどう見てもfloat型です。
(末にfってついてるしね)
だったらわざわざ型を宣言しなくても中に入れる値で逆算できそうじゃないですか?
それが型推論です。
さっきのコードは型推論で書くと以下のようになります。

auto hoge = 1.0f;

hogeの前についてたものがfloatからautoに変わっただけです。
難しくないでしょう?

型推論は使うべきか

便利な型推論なんですが使うべきかどうかということで
結構意見が分かれます。
私が知っている範囲でメリット・デメリットをまとめてみます。

メリット

・コードの書き方がそろう
・明らかにわかるものをわざわざ書くのは無駄
・言語によっては速度が速くなる

デメリット

・パッと見で変数の型がわからない

私の意見

私はガンガン使うべきだと思います。
というのもデメリットよりメリットが多いと思っているからです。
まぁ上に上げた私が知っているメリットデメリットを見れば一目瞭然ですね。

もちろんコーディング規約だとかで使えない場合もあると思います。
ただ使えないわけでないなら使うべきだと思います。
何よりも書き方がそろうのがいいです。

毎回ローカル変数を定義する度に型を宣言していくのははっきり言ってめんどうです。
floatやint程度ならまだしもジェネリクスやテンプレートといったものを使った
長ったらしい型を逐一書かなくてはならないとか考えるだけで頭が痛いですw

パッと見で型がわからないって言っても今どきのIDEを使っているなら
マウスカーソル載せれば型出てきますし、問題になるようなことではないと思います。

じゃあfloatやintの時は普通に書いて長い型名の時だけ型推論使えばいいじゃないという意見もあります。
もちろんそれでもいいのですが、ケースバイケースで書き方が変わるのは後から見たとき見辛いと思います。

あとがき

今回は型推論の是非について私見を書きました。

使うべきとかデメリットよりメリットの方が多いとか
断言的な書き方をしましたがこれはあくまで私が知っている範囲での話です。

私が知らないメリットデメリットもあるかもですし、
何よりコードの書き方なんて個人の好みです。
型推論分かりづらいって人は使わず書いてもいいと思います。
(コーディング規約があればもちろんそれに従いましょう)

ただ型推論を使って損することはないので使うことを私は勧めます。

それでは今回はこの辺でノシ