リファクタリング(というか書き直しに近い)をやる
最近、自分が書いたクソなコードを修正してる。
javaを初めて書いたころのソースなんだけど、そりゃぁもうひでぇひでぃ。
どうやったらここまでひどくなるんだ?と自分に問いたい。
リファクタリングって言っても
おそらく時間はないからjsp内の修正までは手が回らないだろう。どうしよ。
せめてjavaコードに対してテコ入れする。
ここ1年で覚えた&勉強したことを現行のソースに加えていこうと思う。
最大限やるつもり。(あくまでつもり)
環境は、以下の通り
WEBコンテナ | tomcat5.0 |
JDK | java-j2sdk1.4.2 |
Eclipse | 3.1のWTP1.0(All-In-One-Eclipse210で開発してた) |
eclipse | 3.4のpleiades提供のものを使う。 |
先取りが好きなんで、Ganymedeを使う
リファクタリング以前に、現状の問題と対応を整理していくと
- オブジェクト指向やデザインパターンがなってない。
- newしてインスタンスを生成してる意味がようわからん。
- クラスを使うためならばnewとしか考えてなかったってことかな。
- Factoryとかが存在せずnewばかり。newしないと思ったらutilじゃないのにstaticだよ(ぼけ)。
- パッケージ構成(とか)が機能ごとに分かれているのだけれど、機能ごとのパッケージ配下の構成がむちゃくちゃ。
- beanとかServletとかパッケージ分けされずに、機能のルートパッケージになっていたりする。
- パッケージ構成を一貫性のあるものに換えよう。
- beanとかServletとかパッケージ分けされずに、機能のルートパッケージになっていたりする。
- ソースを追うことはできるが、function(関数、メソッド)の嵐になっている。
- Daoクラスなのにstaticなメソッドばかり。
- DBに対して、insert、updateするのに普通はstaticにする必要性なんてまったくない。
- 中途半端にstrutsを使ってる
- 一部の機能でstrutsを使い、それ以外はまったくもって使っていない。
- 生servletをつかってる。抽象クラスのServletは用意しているが何もしていない。ただ継承しているだけのAbstractServletになっている。せめて共通処理とかやれよ。
- jsp内でstrutsのタグ(htmlとか)、jstlとかほとんど使ってない。XSS対策の脆弱性がある。
- strutsを使ってる部分では、Filterクラス(SetCharacterEncodingFilter)でUTF-8エンコードしているが、strutsを使っていないものはMS932(Wjindows-31J)となっていたり、エンコードしていない場合もあったり、1つのアプリでエンコードがばらばら。JSPのpageEncoding、contentTypeもUTF-8とMS932が混在しまくり。もちろん、それにともなってJSファイルのエンコードもばらばら。
- Filter
- フィルタで何してるんだ?ってくらい処理している内容が不明。
- セッションチェックでFilterを使ってるんだけど、チェック除外URLなどの指定がむちゃくちゃ。パラメータ名で分けたりしてる。
- 初期化パラメータをweb.xmlに定義するように変更する。
- もちろん、MapやSet(HashSet)に除外URLをセットしておいてチェック対象URLかどうか判定するようにする。
ここまでくると、よくこんなソース書いたよなーと思える。オマエ(俺)はアホか。失格だ。
最後に、