StoryEdit 開発日誌

ウェブアプリ StoryEditを作ってましたが延期。普通のブログ。

Effective Java 2nd Editionを読んでいる。

Java はじめてもうすぐ一年。仕事で使い始めて半年。徐々に慣れてきた。そろそろまじめに、Effective Java 2nd Editionを読む気になって読み進めているのが、想像以上に面白い。2、3、6章を読み終えた。

Javaの深いところ、とはいわないが、言語的にこう書くのがモダンである(しかしEJ2がでたのは遠い昔の2008年だが)、というような項目がつらつらと書いてあり、Cあがりの私には新鮮である。Design pattern全盛のころ(2006年頃)にGoF本を読んでた私には、たとえば、開始早々でてくる「Singletonはenumを使え」の時点で既に新鮮である。JavaでSingletonを書くためには、getInstanceだろ、と刷り込みがおこっているためだ。

Builderの実装にも惚れた。古き佳きJavaを触っていた私が知っていた、1年前のJavaは、JavaBeans patternと呼ばれる書き方であったようだ。再び触りはじめたころにOSSを読んで、「そうか、thisをコンストラクタで呼び合うようにするのが変更箇所が少なくてよりモダンなのか」と思い、書いていたコードはTelescoping patternと呼ばれており、既に古きものになっていたらしい。たしかに、Argumentが多い場合はBuilderが良い。returnでBuilderを返すあたりも、Javascriptっぽくかけるので好きだ、いや、モダンだ(StringBuilderのappendの羅列を見たあたりで、なにかしらreturnする書き方に改めたが)。

@SuppressWarningをつけろとやたらいってくるIDEを無視し続けていたが、なぜ警告してくるかも明記してある。Reflectionが便利だという話は知っていたが、実際に使ってみて、その威力は明らかになったし、JUnitアノテーションを自分で実装できる例題がありつつ、最後には「しかしAnotation拡張は使うべからず」との、なんとも残念な結びにも、共感できる。

「エキスパート C」や「バイナリハック」のような実装の良書を待ち望んでいる私には、正直、Effective Javaなんぞ、、、と思っていたが、もっと早く読んでいれば良かった。2書を超えるものではないにしても、Java界隈ではじめて出会えた良書である。これも半年のJavaのコーディングの中で、なかなか思うようにコードを書けないことに悩んだ末に読んだからの感動なのかもしれない。

おすすめである。

Effective Java (2nd Edition): A Programming Language Guide (Java Series)

Effective Java (2nd Edition): A Programming Language Guide (Java Series)


追記:ちなみに、他の良書も調べてみると、以下のリンクが良さげ。Refactoring、Clean codeと既読本も入っており、他の本も読んでみようと思う。

http://java.dzone.com/articles/top-10-books-advanced-level