ツールやフレームワークは使いこなせてなんぼ

この2週間ほど、久しぶりにSAStrut+S2JDBCを触っています。
ベースとなる部分を作るというのがメインで、JSPやAction、Serviceのほとんどは協力会社さんに作ってもらいました。
今週に入り、それの手直しをしています。

ソースを見ていて思うのですが、行数が多くなる書き方、マジックナンバースーパークラスやInterfaceにすることもなく同じような書き方を繰り返す。
その結果、同じ処理内容でも別々の場所に、それも変数名が微妙に異なるような書き方がされていたりして、1つが正しくてももう片方が本当に正しいのかどうかが分からなくなることがあります。

あと、Action内でのtry〜catchが変に入っていたりすることで、トランザクションの管理がうまくできていなかったりします。
SAStrutsの場合、ロールバックさせたい場合はActionでExceptionをThrowし、そのExceptionはThrowableInterceptorにて処理させるのが一般的かなと思っていますが、そもそもInterceptorがない時点で少し?となりました。
ロールバックの全く無い処理なんてほとんど無いはず。。
しかも、ぬるぽ等が発生したらAction内のtry-catchが対応できていないところとかだと、意図せぬエラーページが出てしまうことも。。

システムを作る時、ロジック部分やデザインは確かに重要ですが、運用していく上でエラーハンドリング(Exceptionの扱い)が後になって効いてくるんですよね。。
Actionの1つ1つにtry-catchを入れていたら、テストをするのがかなり手間です。
同じロジックを書いておけば?と思うかもしれませんが、そうなるともし修正が必要になった時とかもう…

Interceptorでcatchする共通処理を作成しておけば、ActionやServiceを作る際は逆にそれをベースに考えて作れるので、作りもすっきりすると思っています。

ただ言うのは簡単ですが、実際に自分がやるとなると結構難しいんですよね、ほんと。。
何万行も書いて、どうすればスッキリさせれるか毎回改善を試みてると、自ずと見えてくるものがあるなと最近よく思います。

あとフレームワーク等は知っておけば知っているほど実装の幅も広がりますし、効率性が増すことも多い。
ツール類も同じ。

結局は日々勉強になるんでしょうね。

Seasar2によるスーパーアジャイルなWeb開発 (WEB+DB PRESS plusシリーズ)

Seasar2によるスーパーアジャイルなWeb開発 (WEB+DB PRESS plusシリーズ)

Seasar2によるWebアプリケーションスーパーサンプル

Seasar2によるWebアプリケーションスーパーサンプル