(大前提として)コーディング規則があるならそれに従ってください。
var
を使用できるのは、ローカル変数の宣言と初期化を一度に行い型が推論できる場合のみです。
かなり限られた場面です(フィールドやメソッドシグネチャ等では使えません)
var list = new LinkedList<Integer>();
は
LinkedList<Integer> list = new LinkedList<Integer>();
あるいは
LinkedList<Integer> list = new LinkedList<>();
と全く同じ意味です。
List<Integer>
にもDeque<Integer>
にもなりません。
意図的にあるインターフェースに制限したいなら、型を明示しなければなりません。
Java
1var linkedList = new LinkedList<>();
2List<Integer> list = new LinkedList<>();
3Deque<Integer> deque = new LinkedList<>();
しかしArrayList
やArrayDeque
でもよさそうなのに、なぜLinkedList
なのかが逆に不明確になった気はします(単なる例に突っ込むのもあれですが^^;
そもそもこのメソッドの中だけですよ?
LinkedList
を選んだのは自分ですし、忘れちゃう・間違った操作なんてことあります?(もちろん外部に公開するものであれば、全く話は変わります)
今回の例では本家?では、var
を使っていいと言っています。
G5. Don't worry too much about "programming to the interface" with local variables.(インタフェースに対するプログラミングはローカル変数では重要ではない)
Local Variable Type Inference: Style Guidelines
Local Variable Type Inference: Style Guidelinesを読んだ - kagamihogeの日記
個人的にはvar
を使用できるところはすべてvar
派です(型よりも変数名の位置が揃うほうがよほど読みやすい)
(IDE使用が前提ですが)正しく命名されていれば、めったに困ることもないですね。
もちろんここでの回答等文字で伝える場合は、わかりやすさ優先で型を明示することもよくあります(特にJavaはいまだに「8です」という方もいるので質問に合わせがちです^^;
今どきのIDEなら相互に一括変換できるので、どうとでもなっちゃいますし。
var
に関しては、C#がだいぶ早い導入でした。
C#3.0(2007年)C# の歴史 - C# ガイド | Microsoft Docs
Java10(2018年)Javaバージョン履歴 - Wikipedia
「var
使う・使わない」のような話は当時かなりされました。
[雑記] 型推論の是非 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
全体的に浸透するまでは10年くらいかかるものなのかもしれません^^;