>>100
たぶんそう

理解しにくいというのは,IDEとかの支援がない状態で読むとき,
頭の中でvarを展開しなければならないということ
var hoge = make();
var fuga = hoge.getAttr();
...
ローカル変数だけで使えるなら
型安全だし,シンプルに見えるのはいいのだが,
明示的に書くよりはわかりにくい
(rubyのコードとか見てるとわかりにくいと感じる)

ところで
List makeList() {
var l = new ArrayList(); //この時点ではArrayList
...
l = new LinkedList(); //lはListでないと駄目だとわかる
...
return l; //この行でlがListと確定
}
こういうのもコンパイラを数行いじるので対応できるものなの?