続続・JavaScript

今日は言うことを素直に聞いてくれましたとさ。
まあ、今日はJavaScriptなんてほんの少ししか書いてないけど。
テキストボックスの内容を変えたときとあるボタンを無効にするというごく簡単なものしか書いてないので、こんなことでうまく動いてくれなかったら困るけど。

というわけで、今日はほとんどJavaのコーディング。
既存のプログラムに対する機能強化というわけで、もとのプログラムがオブジェクト指向のおの字くらいしかなく、変数の使い方とかみるとまるでC言語のようなそんな感じです。
業務的なエラー処理なら業務例外クラスみたいのを作っておいて、業務的な矛盾が発生したときは業務例外をnewして、catchで適切な処理をおこなうというのが常套手段だと思うが、なんとエラーメソッドを呼び出してその後returnをかけているというなんのための例外だかよくわからないことをしているところが多々。
ほかにも文句をつけるところはたくさん。

DBコネクションのクローズとかはfinally節で行うのが普通というかそうしないとクローズ漏れが発生する可能性があると思うが、finally節で行われてはいない。

VMに割り当てられるメモリーが底をついても知らんと。
OracleJDBCドライバーはちゃんとクローズしてあげないとガベージコレクションがちゃんと動いてくれないことで有名なんだけどな。

DBのテーブル構成をみても不可解の一言。なぜかプライマリーキーをはらずユニークインデックスが張られていたり、そもそもユニークキーがしかるべきところに張られてなかったり、外部キーなんて一つも見あたらなかったり。
何らかのバグでおかしなことになってもしらんと。

プログラム自体が一つの変更をかけるのに数カ所同じような修正を入れなければならないようなできになっているのでデータの不整合など十分予期できることだけども。

そもそも、資料を見るとMVCモデルうんぬんとか書いてあるけども、かろうじてビューとそのほかは分離しているような気もしないでもないけども、コントローラとモデルは見事に合体しています。むしろ、モデルとなるべきBeansは完全にデータの入れ物。それもHashtableをprivateとしてクラス変数にしていてpublicで一応のデータ操作ができるようにしてあるクラスが用意されているくらい。

本当はそこにいっぱいメソッドを作ってデータ操作を行うのが本筋だと思うけども。

僕が新規に作った画面についてはBeansを起こしてもよかったけども、きっと後の人がメンテできないという状態だと思われるのでしかたなくまねして作った。
ささやかな抵抗として、ServletないのdoPostメソッドがコントロールぽく、そのほかのprivateなメソッドをモデルっぽく作ってみましたとさ。

JSPが共通で違うServletを使っている画面とか、Servletは同じだけどもJSPが違う画面とかまあ同じ処理ことを極力書かないように工夫はしてみた。しかし、どうしても引き継ぐ変数が多くなっていまいちな感じ。