Java Puzzlers 罠、落とし穴、コーナーケース - ジョシュア・ブロック

かなーり時間がたってしまいましたが、以前紹介いただいた「Java Puzzlers 罠、落とし穴、コーナーケース」を読んでみました。簡単に言うと、Javaアンチパターン (やってはいけないパターン) 集という感じの本です。ただ、この本の面白いところはそれがクイズ形式になっているところ。読んでいて楽しくなるような工夫が随所にあります。


Java Puzzlers 罠、落とし穴、コーナーケース
Java Puzzlers 罠、落とし穴、コーナーケース
ジョシュア・ブロック (著)
ニール・ガフター (著)
柴田 芳樹 (翻訳)


やってしまいがちな「アンチパターン」集

まとめると、short、byte、charの変数に対して複合代入演算子を使用しないでください。 - p68

たとえば、次のコードを実行するとどうなるでしょう?

public class TestCompound {
  public static void main(String argv[]) {
    short i = -1;
    i >>>= 1;
    System.out.println(i);
  }
}

=> -1

ビットシフトして、代入しているはずなのに値が変わっていません。なんでこうなるかは本を読んでね。

これに限らず、ちょっと見ただけではどこがおかしいか全くわからない、という種の問題を抱えたコードが多数掲載されています。コード的には正直あまり書かなそうなコードばかりなのですが、何かの拍子に書いてしまったら、ハマること必死という感じのコードばかりです。そういう状態を前もって予防したり、より深い言語の理解を得たい人にとってはとても良い本だと思います。

あと、Javaが書けてパズル的なものが好きな人も読んでみると面白いかも。