ローカル変数はアップキャストすべきではない

昨日はグレンリベットをストレートで十杯ほど飲んでしまったので、
今日は駄目かと思ったら意外とそうでもなかった。


で、書こうと思っていたことその1。
参戦はしないのでトラバはなし。
ローカル変数の型 #4 - odz buffer
Re: Re: 型宣言は汎用的にすべきか? - kなんとかの日記
404 Not Found
要するに「ローカル変数はアップキャストするべきか否か」。


で、「ローカル変数ではキャストすべきでない派」だなあ。
まず、ローカル変数を疎結合にする必要性は殆ど無いわけで、
考えもなしにアップキャストして抽象化、とか疎結合って言ってしまうのは典型的な駄目パタン。


寧ろ実体の凝集度を高めるためにローカル変数は(可読性なども含め)型を特定しておいた方が良い。
と僕は考える。


抽象化は実体間における結合度を弱めるために使えば良いのであって、
何も内部で型を曖昧にしてしまう必要はない。


Object object = new Hoge();
なんてしないのと同じように、
List list = new ArrayList();
は「すべきではない」ように感じる。