Skip navigation.

Error Log

最近電車ばっかり…

Thursday, 29. June 2006

Simply the Best ...

※ Opera とはまったく関係ないですm(_ _)m
今携わっている案件のソースレビュー時の話です。


いずれかに部分一致する場合に true を返し、それ以外の場合は false を返す。(search が "" の場合は true)


(変数名は仮名にしてます)というメソッド仕様に対して、
最初に出てきたコードがこれ。
(うざいのでコメントは省略してます)
if (StringUttils.isEmpty(search)) {
    return true;
}
if (string1 != null) {
    if (string1.indexOf(search) != -1) {
        return true;
    }
}
if (string2 != null) {
    if (string2.indexOf(search) != -1) {
        return true;
    }
}
return false;

「if が複雑すぎ」と言いながら、僕が提示したコードがこれ。
return srting1 != null && string1.indexOf(search) != -1
    || string2 != null && string2.indexOf(search) != -1;

しかし、search = null のときに NullPointerException が発生することが判明し、元コード書いた人が修正した結果がこれ。
if (StringUtils.isEmpty(search)) {
    return true;
}
return srting1 != null && string1.indexOf(search) != -1
    || string2 != null && string2.indexOf(search) != -1;

「なぜそうなる」とつぶやきながら、僕が再提示したコードはこれ。
return StringUtils.isEmpty(search)
    || srting1 != null && string1.indexOf(search) != -1
    || string2 != null && string2.indexOf(search) != -1;

… Simply the Best.
January 2010
M T W T F S S
December 2009February 2010
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31