今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

変数のnullチェックを手抜きする方法

AからBを取得してBからCを取得して、を繰り返して最終的な値に辿り着く、みたいなことをやるケースって意外と多い。途中で何かの取得エラーがあった場合は、デフォルト値を返すって感じの。

例えばWebアプリの場合。

    Object default = DEFAULT_VALUE;
    HttpSession session = request.getSession();
    if (session == null) {
        return default;
    }
    Hoge hoge = (Hoge)session.getAttribute("hoge");
    if (hoge == null) {
        return default;
    }
    Object o = hoge.getMember();
    if (o == null) {
        return default;
    }
    return o;

if文をネストさせてreturnする箇所を減らす方法もあるけど、可読性が下がるし。
なんかいい方法ないかなー、とか考えてて思いついた方法。

    Object value = DEFAULT_VALUE;
    try {
        HttpSession session = request.getSession();
        Hoge hoge = (Hoge)session.getAttribute("hoge");
        value = hoge.getMember();
    } catch (Exception e) {}
    return value;

最終的な値に辿り着く前に何らかの例外が発生したらデフォルト値が返される。
可読性も悪くないし、意外と便利かも。