Re: Re: 型宣言は汎用的にすべきか?

最初に書いておきますが、「ローカル変数ならキャストしなくてもよい」という意見なら賛同しますが、「ローカル変数ではキャストすべきでない (型宣言はできる限り特定しておいたほうがよい)」という意見には賛同できません。これは前のエントリから書いてある通りです。

それをふまえた上で、お読みください。

まぁ状況によりますが,いきなりキャストする理由がわかりません.

http://cappuccino.jp/keisuken/logbook/20080309.html#p01

前のエントリに書いたように、疎結合にするためです。ご自身も

で「型に関してなるべく疎結合にすることが推奨されてますよね」については,「はいそうです」と思いますし,事実そうです.これは静的型付けを行う他の言語でもそうすべきだと思います.

http://cappuccino.jp/keisuken/logbook/20080309.html#p01

と書いてますよね。まさにこれが理由です。そしてこのことはローカル変数に限らず成り立ちます。つまりローカル変数にも当てはまります。

でもこの話ってブロックとかメソッド内のローカルの話なんです.すごく当たり前の話をしてるだけのような気がするんですが.
ローカル変数はメソッドやブロック内で閉じているわけだから,別にわざわざキャストする必要が無いんじゃないというだけの話なんですよ.つまり適用範囲はかなり狭い範囲です.

http://cappuccino.jp/keisuken/logbook/20080309.html#p01

はい、そうです。ですから、前のエントリでも「(ローカル変数なら) キャストしてもいいし、しなくてもいい (どっちでもいい)」と書いています。

まぁ私の意見をまとめると,

  • ローカルやブロックなど,局所的な箇所は型についてそう気をつけなくてもいいのではないか?だからキャストしなくてもいいだろう
  • それ以外は,抽象型に適切にキャストすべし

ということです.

http://cappuccino.jp/keisuken/logbook/20080309.html#p01

これは意見を変えられたということでしょうか。この意見であれば何も疑問に思うことはありませんが、もとの日記では

ローカル変数の型宣言はできる限り特定しておいたほうがよいという趣旨なら、まったくそのとおりだと思います。

はい,そういう趣旨です...(省略).. みなさん無意味にダウンキャストしすぎてます:-).

http://cappuccino.jp/keisuken/logbook/20080307.html#p03