yagibrary

あだ名のやぎと図書館のlibraryを組み合わせてyagibraryです。本から学んだことをみなさんに紹介します。

【洋書和訳】Joshua Bloch【Effective Java Third Edition】1 Introduction2

kea.nu

目次

1 導入

ほとんどの項目がプログラム例で説明されている。本書の大きな特徴は、多くのデザインパターンやイディオムを説明するコード例を掲載していることである。必要に応じて、この分野の標準的な参考文献[Gamma95]との相互参照を行っている。


多くの項目には、避けるべき習慣を示す1つまたは複数のプログラム例が含まれている。このような例はアンチパターンとして知られることもあり、「//絶対にやってはいけない!」などのコメントで明確に表示されている。それぞれの場合、その例がなぜ悪いのかを説明し、別のアプローチを提案している。


本書は初心者向けではない。すでにJavaに慣れていることを前提としている。もしそうでなければ、Peter SestoftのJava Precisely [Sestoft16]のような多くの優れた入門書の一つを検討していただきたい。Effective Javaは、Javaの実用的な知識がある人なら誰でもアクセスできるように設計されているが、上級プログラマーにとっても考える材料になるはずである。


本書のルールのほとんどは、いくつかの基本原則から派生している。明確さと単純さが最も重要である。コンポーネントの使用者が、その動作に驚くようなことがあってはならない。コンポーネントは可能な限り小さくすべきであるが、それ以上小さくしてはならない。(本書では、個々のメソッドから複数のパッケージからなる複雑なフレームワークまで、再利用可能なあらゆるソフトウェア要素をコンポーネントと呼ぶ)。コードはコピーするのではなく、再利用すること。コンポーネント間の依存関係は最小限にとどめるべきである。エラーは、発生後できるだけ早く、理想的にはコンパイル時に検出されるべきである。


本書で紹介するルールが100%適用されるわけではないが、大多数のケースでベスト・プログラミング・プラクティスを特徴づけるものであることは確かである。これらのルールに忠実に従うのではなく、正当な理由がある場合に限り、違反することが必要である。プログラミングの技術を学ぶには、他の多くの学問と同様に、まずルールを学び、次にそれを破るタイミングを学ぶことから始まる。


本書は、ほとんどの場合、パフォーマンスに関するものではな い。明確で、正しく、使い勝手がよく、堅牢で、柔軟で、保守しやすいプログラムを書くことが重要なのだ。それができれば、通常、必要なパフォーマンスを得るのは比較的簡単なことである(項目67)。いくつかの項目は、性能の懸念について述べており、そのうちのいくつかは性能の数字を示している。これらの数値は、"On my machine "というフレーズで紹介されているが、せいぜい概算と考えるべきである。


私のマシンは、3.5GHzのクアッドコアIntel Core i7-4770Kと16GBのDDR3-1866 CL9 RAMを搭載し、Microsoft Windows 7 Professional SP1(64ビット)でAzulのZulu 9.0.0.15 release of OpenJDKが稼働する老朽自作機である。