T2Frameworkで気になった些細なこと

フォワードやリダイレクトのアドレス

AddPageをみてみる

return Redirect.to("jsp/add.jsp");
return Forward.to("jsp/add.jsp");

最初にスラッシュはいらないようだ。

続いてCheckboxPage

return Redirect.to("/jsp/checkbox.jsp");
return Forward.to("/jsp/checkbox.jsp");

ん?やっぱりスラッシュは必要なのか?どっちが推奨?

オートボクシングを使用していない

あとはサンプルコードでオートボクシングを使っていないのが非常に気になる。一瞬1.4時代のコードかと錯覚する人は多いかもしれない。

現在のサンプル

Integer result = null;
try {
	Integer arg1 = Integer.valueOf(s1);
	Integer arg2 = Integer.valueOf(s2);
	result = new Integer(arg1.intValue() + arg2.intValue());
	request.setAttribute("result", result);
} catch (Exception e) {
	request.setAttribute("message", MessageConstants.ADD_ERROR_MESSAGE);
}

これは以下のようにしたほうが見やすいと思う。足し算をしているというのが一目瞭然だし、nullはとらないのでintで持ってるほうが自然で、intValue()などメソッド呼び出さない分上よりはパフォーマンスで有利か(この程度なら変わらないけどループの内側だとどうだろう)。

try {
    int num1 = Integer.parseInt(s1);
    int num2 = Integer.parseInt(s2);
    int sum = num1 + num2;
    request.setAttribute("result", sum);
} catch (Exception e) {
    request.setAttribute("message", MessageConstants.ADD_ERROR_MESSAGE);
}

変数名を「sum」に変えているのは初心者の混乱を避けるため。以前NetBeansのWebアプリのサンプルでにたような混乱があった。この場合文字列の「result」と変数の「result」が出てきてるのが混乱の元というわけだ。もっともこれだけシンプルならば

    request.setAttribute("result", num1 + num2);

といちいち変数に入れる必要は無いだろう。

文字列の長さ

空文字列の判定にStringはlength()=0判定している模様。

これはJ2SE5.0までの基本だが、JavaSE6ならばStringにisEmpty()があるのでこちらを使うほうが望ましいと言われている。

JavaSE 6の世界

軽くソース見てるとインターフェースにも「@Override」を使っていてJ2SE5.0しか知らない人は驚くかもしれない。この書き方は5.0ではエラーになるからだ。だが、JavaSE6からはエラーにならないのだ。