Effective Java 第3版

  • 丸善出版
3.94
  • (4)
  • (9)
  • (1)
  • (2)
  • (0)
本棚登録 : 205
感想 : 8
本ページはアフィリエイトプログラムによる収益を得ています
  • Amazon.co.jp ・本 (412ページ)
  • / ISBN・EAN: 9784621303252

作品紹介・あらすじ

Javaプログラマーにとって必読の定番書『Effective Java』の改訂第3版。

この第3版では、Java 8で新たに導入されたラムダとストリームに関する章が新規に追加されたほか、オプショナル、インタフェースでのデフォルトメソッド、try-with-resources文、@SafeVarargsアノテーション、モジュールなどの機能を扱った項目を含み、第2版の78項目から90項目に増加しています。

今日ではJavaは大きく複雑になり、並列実行から、繰り返し、各種データの表現まで、多くの事柄に対して多様な抽象化を持ち合わせています。
この大きさと複雑さを考えると、最新のベストプラクティスの指導書はなおさら重要です。

本書は多くのデザインパターンとイデオムを示すコード例を含んでおり、プログラミング言語Javaの正しい理解と、簡潔で明瞭で正確なソフトウェアの設計に役立つでしょう。

感想・レビュー・書評

並び替え
表示形式
表示件数
絞り込み
  • Javaを使う者としては読んでおくべきはないかと思い書店で目にして即購入。Javaを扱う上でどう書くべきかを知る上で刺激になる個所もあるが、いかんせん内容が難しい。翻訳された日本語が読みにくいのかもしれない。文字数を思い切って減らして、イラストを追加すればもう少し理解度が高まりそう。そういうのは別の本に任せているのかもしれない。そして、本書はバイブル的な位置づけで、他書を読んでもっと詳しく知りたくなったときに戻ってくるべき拠り所となる本なのかもしれない。ただ、enum関連のあたりは自分でも気になっていた個所なのでとても参考になるし、使えるときが来たら使ってみたいと思う(戦略enumパターンとか)。

  • 購入時期が古く第二版となります。

  • Javaのベストプラクティスについて網羅的に解説している。1項目2~6ページ程度なので、コツコツと読み進めやすい。合計90項目。対象読者はJavaの構文やオブジェクト指向は一通り理解できているが経験が浅いというような人で、つまり完全な初心者向けの書籍というよりは中級者向けの書籍と言えるだろう。このことは最初にも触れられていた。各項目では、タイトルで原則を延べ、なぜそうしなければいけないのかということをアンチパターンとデザインパターンを交えながら説明するというフォーマットになっている。全体を通しての一貫した主張は公開したAPIは一度設計したら変更することができないのでパフォーマンスや利便性を損なう実装は避けるべきというものであり、これをセキュアに達成するための方法とアンチパターンが紹介されている。ただし、パフォーマンスに関しては不必要なチューニングは必ず悪になるという考え方で、チューニングする際には必要性の証明と前後でのプロファイリングを必ず行うことという原則も述べている。基本的に綺麗な設計は良いパフォーマンスに繋がるということが書かれており、読みやすく簡潔で明瞭なコードが好ましいというスタンスである。この本で紹介されている内容はAPIを設計する側の人間に向けられたものが多いが、その中でも繰り返し述べられていたのがオブジェクトの不変性の確保とスレッドセーフの保証である。これらはJavaを書き始めたばかりの人が一番見落としがちなことだとは思うので、これらについてのベストプラクティスにページを裂くのは非常に良いと思う。

    まだ私の経験が浅いため、Javaのベストプラクティスとして書かれている内容に抜け漏れがないかという点については判断することができないが、多くの内容は直接的に役に立つ内容であった。私はひねくれ者なので本を読むときは悪い部分を探しながら読むのだが、この本に関しては本当にそれが無かった。他のレビューでは訳が悪いといったことも書かれていたが、文法として破綻していたり意味が通じないといった部分はほとんど無かった。あえて言えば、訳注が欲しい部分で不足していると感じる部分はある -- 例えば、(おそらく)reflexiveを反射的と訳しているがこれは数学の反射性のアナロジーか、もしくは、英語圏で一般的な概念なのだと思うが、日本語ではあまり一般的ではない気がする -- ので適切な訳注があるとより理解の助けになるといった一面はあると思うが悪い点とまでは言えない。

    素晴らしく価値のある書籍だった。一言で表すならJavaの義務教育。

  • 自分の気になったところだけメモ。

    第2章
    メンバ変数のデータ型を決定する基本的な手順、不必要なオブジェクト生成を避ける手法が学べた。

    第3章
    標準ライブラリが渡されたオブジェクトをどのように識別しているかをequals,hashCode,toString,compareToなどのメソッドを通じて理解した。
    クラス設計において、"クラスの意味あるフィールド"は、思った以上に重要。

    第4章
    継承すれば、サブクラスは、スーパークラスとともに変わっていかなければならないリスクがある。コンポジションを選ぶことにより、そのリスクから解放されると理解した。

    第5章
    当然だけど、ジェネリクスメソッドにおいて、メソッド内部で、メソッド呼び出し時に指定された型にキャストするんであればワーニングは無視できる理解した。

    第8章
    これも当然だけど、エラーは早めに返し、nullを返さない。オーバーロードは控えめに使う。

    10章
    エラーメッセージにエラー情報を含め、エラーが起きた時は、エラーアトミック性に努める。

  • 請求記号 007.64/B 58

全8件中 1 - 8件を表示

Joshua Blochの作品

  • 話題の本に出会えて、蔵書管理を手軽にできる!ブクログのアプリ AppStoreからダウンロード GooglePlayで手に入れよう
ツイートする
×