『Javaルールブック』
TwitterのTL上で本書に関するツイートを何度か見かけて気になっていたので、本屋でパラパラ見て「これは会社に一冊あると良さそうだ」と思い、勤め先用の書籍として購入して貰いました。
- 作者: 大谷晋平,米林正明,片山暁雄,横田健彦,電通国際情報サービス
- 出版社/メーカー: 技術評論社
- 発売日: 2011/02/15
- メディア: 単行本(ソフトカバー)
- 購入: 4人 クリック: 163回
- この商品を含むブログ (20件) を見る
本書は、良いコード(=保守しやすい)を記述するためのルールを中心に、そのルールの違反例と修正例のコードと説明が掲載されており、スッキリとした構成でとても読みやすかったです。
ルールについても全体的にフムフムと同意できる、または参考になる内容ばかりだったのですが、1つだけ自分が「ん?」と引っ掛かったのが『2.10.4 文字列リテラルと変数を比較するときは、文字列リテラルのequals()メソッドを利用する』というルールです。
どういうことかというと
if (str != null && str.equals("Y")) { // 省略 }
よりも、
if ("Y".equals(str)) { // 省略 }
を使うことを推奨するということです。
前者だとnullチェックを行う必要があり、nullチェック漏れのリスクを回避できるという理由で後者が推奨されています。
テクニックとしてこういう方法があるのは知っていましたが、自然言語の順序として何となく気持ち悪さを感じてしまうので、私は前者を使っています。(変数を文字列リテラルと比較するのか、文字列リテラルを変数と比較するのかでいうと前者の方がしっくりくる)
この話題について、ここ数年の間にどこかで大議論が行われているのを見た記憶があるけど、それがどこだったか思い出せず。
その議論に決着が付いたのかも記憶にないのですが、どなたか知ってる人がいれば教えてください。。