きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

不毛な議論がやっと片付いた

本当にどうでもいい。

「名前に違和感がある」がはじまり。

ServletRequestやServletResponseのように、
リクエストとレスポンスを分けた
JavaBeanではない箱物オブジェクトがあり、
上司の思いが強く、
「リクエストは参照専用でセッターは付けない」
という前提の元、
DAOに渡すのはセッターのある
レスポンスになってしまい
名前に違和感があると利用者に言われ、
検討を始めたのは約9ヶ月前。

しばらく忘れ去られた。

名前の話も馬鹿馬鹿しい議論だった。
実装の話も馬鹿馬鹿しい議論だった。

結局、一番始めに僕が出して
即却下された実装と、
僕が出した名前が今日採用された。

僕の実装は、概念面でも
至極分かりやすかったのに、
なぜあの頃却下されたのか。

不毛だ。

つーか、レスポンスがリクエストを
継承したインターフェイスなのが
概念的に間違ってる。

実装(ゲッター)を使いたいために、
概念に合わない継承をしている。
これに気付いてる人が少ない。

レスポンスはリクエストでもあるなんて
概念的におかしいじゃないか。
面倒なんで、そこは議論にあげなかった。
最初がダメなもんはずっと引きずるのさ。

これとは別に、インポートしたクラスが、
クラスパスにない場合、
クラスロード時に例外が起きると言う人が
いたので間違いを正すのに苦労した。

インポートはヒントでしかない。
必要となるまではロードされない。

インターフェイス
スーパークラス
static変数の型
static初期化子で使用するクラス
インスタンス変数の型
コンストラクタで使用するクラス

概ねこの順番だ。

スーパークラスでもインターフェイスでもなく、
利用するだけのものは、実際にクラスが
必要になるまでは例外は発生しない。
nullで初期化しているインスタンス変数の型が
実はクラスパスにいなくても、
インスタンス生成しただけでは例外は発生しない。

別の側面からいうと、
nullは型チェックされないのだろう。
だからクラスがロードされない。

インポートしてるとロードされるわけではない。
不要インポートは不要クラスロードではない。

そういえばインターフェイスは、
インターフェイスを複数extends出来ると
僕が言ったときも信じてもらえなかった。
インターフェイス多重継承だよ。
みんな何寝ぼけてんのさ。
いくらimplementsしても多重継承とは言わないよ。

不毛だ。