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

"string".equalsってバッドノウハウなの?

最近↓みたいなコードをよく見かけるんだけどすんごい気持ち悪い。

if("hoge".equqals(stringValue)) {
  ...
}

本当にequqalsなんてメソッドがあったらこええええええええええええええええええええー。
とかネタはさておき、

よりSafetyな記述として、"hoge".equals は見かける。(何かの本に書いてあったような?)
比較対象がnullだったらやだよね、みたいな。
ただ、実際渡される値がnullであるかどうかを確かめるのはここ(NullPointerException)であるのは不適当であり、どうせ調べるなら渡された直後なのだろうから、ここは既に好みの問題のような。
あとは「あり得る」nullを素通りさせたいならそれはそれで。(Webならパラメータが与えられなかった場合とか)

正直、

if (stringValue.equals("hoge"))

if ("hoge".equals(stringValue))
に気持ち悪さの差違はないと(個人的には)思う。

NullPointerExceptionは偉大*1だけど、
NullPointerExceptionでnullを検知しようとする考えがそもそも間違い、な気がする。
あくまでフェイルセーフというか。

*1:アドレス0にも正直にアクセスするC言語的にはね