Effective Java[第2版]が面白い

本屋でたまたま買ったEffective Java[第2版]が面白い。

Effective Java 第2版 (The Java Series)

Effective Java 第2版 (The Java Series)

ほとんどJavaに関しては基礎的な事項を知っていたつもりなのだけれども、それでもかなり得るところがあった。

ただ、途中途中で同意できないやり方もあったような気がする。

それでも、とにかく面白かった。

(Effective JavaとEssential Javaってタイトルが似ていてExceptional/Essential/Effective C++並みに紛らわしい…)

で、結局何が面白かったのか

  • enumの使い方
    • Singletonをするならenumが一番だ
    • enumにabstractメソッドを持たせよう。あるいはinterfaceを実装させよう。
    • EnumSetやEnumMapを使おう。ビットマスクを使うぐらいならEnumSetを使おう。
  • 既存のJDKの過ちについて
  • cloneや、equals、Comparableなどのセマンティクス、契約について
  • ジェネリクスやヒープ汚染について
  • ほかいろいろ

個人的にどうでもよかったトピック

シリアライズに関すること全て
Javaシリアライズ機能があそこまで面倒なトピックを含む機能だとは思わなかった。

Java5で実際に仕事してから読んだほうが効果的である

この本を読んでいると身につまされるような事例がたくさん出てくる。要するに自分が過去にやったJava上での失敗をたくさん見せられる。

これは良い懺悔の機会だ。

ぜんぜん関係ないけど、気になること

いわゆる、『ただしいコード』を書くと、しかめっ面をしたり、不安な顔をしたり、「おいおい、俺に理解できないコードを書かないでくれよ」と言ってくる不遜な輩がいる。

そういう輩に対してはどうやって対処すればよいのだろうか?

  • 徹底的に無視すべきである。
  • 徹底的に従うべきである。
  • あなたはある程度その輩の言っていることを飲んでやるべきである。
    • なるほど、相手の言い分も正しいのかもしれない。従ってもいいか。
    • 話し合うのも時間の無駄だし、相手がそう主張するなら、相手に主張の責任を取らせるつもりで従う。
    • 説得できそうにないなら、従ってやる。
  • そのコーディングが正当な理由を説明するべきである。
  • すぐにでも政治的な手段で相手を締め上げるべきである。
  • 彼らに教育の機会が与えられなかったのは大変に残念なことである。教育をする。

これはコーディングに限らず、アーキテクチャの選択やら、いろいろこまごま、必ず出てくる。

ただまあ、何が正しいかといえば、最終的に利益になることを選ぶべき、というのが正しいのには間違いない。

どうすればいいんだろうね。