読者です 読者をやめる 読者になる 読者になる

Java5脳の恐怖

netbeans

EclipseユーザのためのNetBeans環境とプラグイン開発入門
(3/3):CodeZine
を読んでて。

なんでCookieなんだろうか、とか思いつつ、サンプルコードをみてたらなんかあれだなぁと。

Cookie cookie = this.dataObject.getCookie(SaveCookie.class);
// もしも、cookieがnullだった場合にはその処理ができないことを示す
if(cookie != null){
    SaveCookie saveCookie = (SaveCookie)cookie;

    // SaveCookie独自(保存処理)の処理を行う
    saveCookie.save();
}


上記のコードとかみるとメソッドジェネリクス

SaveCookie cookie = this.dataObject.getCookie(SaveCookie.class);
// もしも、cookieがnullだった場合にはその処理ができないことを示す
if(cookie != null){
    // SaveCookie独自(保存処理)の処理を行う
    cookie.save();
}

ででええやんとか思う。


そうか、もうすっかりJava5な頭なのか。自分。
まあ、NetbeansJava5専用じゃないので仕方がないよね。


さらに欲を言えば、nullチェックが面倒なので、

SaveCookie cookie = this.dataObject.getCookie(SaveCookie.class);
assert (cookie != null && (cookie instanceof NullCookie || cookie instanceof SaveCookie));
cookie.save();

と、NullObjectパターンを使ってしまえば、書く方は楽になるなあとか。


NullObjectパターンは賛否両論のあるデザインパターンですが、自分はワリと好きなほう。

追記、の前に

一回書いたのに、サブミットしたらエラー画面になって消えた。はてダ超萎える。
けど、もう一回書く。
というわけで、超ダイジェスト追記。

追記(ダイジェスト)

この、getCookie()メソッドから特定の処理用のCookieを取得し、取得したCookieがnullでないかnullかで、その処理ができるかできないかを判断するのは、NetBeansでは標準的な方法です。

ってあるので、NullObjectじゃムリだね。
「できるかできないか」判定した結果、「何をするか」ってところのAPI確定しきれないもんね。
NullObjectにメソッド用意できないもんね。

追記、の後に

うん。ダイジェストでも特に内容的には問題ないね。

むしろ簡潔になった。

ありがとう、はてダのエラー画面。

これからもどんどんエラーを出して、強制的に校正のチャンスを与えてください。