プログラマメモ2 - programmer no memo2

[java]これは絶対極悪コードだと思うぞ 2006/07/05
2006/11/26

下記のコードをみて、何も気づかなかったら、ちょいとあぶない。



protected static void a(){

String s = null;

if(s.equals("") || s == null){

System.out.println("s is empty.");

}

}





もちろん結果は、下記の通りである。



Exception in thread "main" java.lang.NullPointerException



nullの判定が効いていない。





正直Stringの扱いで

if(s == null || s.equals(""))

を書きたくない。



迷わず、ユーティリティパッケージを作成し、StringUtilsクラスを用意します。

それで、hasLenghtメソッッドを実装。



public static boolean hasLength(String s){

if(s == null || s.equals("")){

return false;

}

return true;

}



このユーティリティメソッドを使い回ししたほうが安全だと思う。

というか絶対そうする。





扱いたいStringオブジェクトにnullが入る可能性があることに耐えきれないなら、



public static String toNotNull(String s) {

if (s == null)

return "";

return s;

}



を作成して、



String s = null;

s = toNotNull(s);



したほうがよいよ思う。





jdk1.5を使用するとstatic importが使えるので、ユーティリティクラスを使用する際に、みためもすっきりになるし。

: