Effective Java 第2版(Joshua Bloch)
書籍情報
- 著者:Joshua Bloch(著), 柴田芳樹(訳)
- 発行日:2008-11-25
- ISBN:9784621066058
書籍目次
- 日本語版によせて
- 訳者まえがき
- Effective Java によせて
- まえがき
- 謝辞
- 第1章 はじめに
- 第2章 オブジェクトの生成と消滅
- 項目1 コンストラクタの代わりに static ファクトリーメソッドを検討する
- 項目2 数多くのコンストラクタパラメータに直面した時にはビルダーを検討する
- 項目3 private のコンストラクタか enum 型でシングルトン特性を強制する
- 項目4 private のコンストラクタでインスタンス化不可能を強制する
- 項目5 不必要なオブジェクトの生成を避ける
- 項目6 廃れたオブジェクト参照を取り除く
- 項目7 ファイナライザを避ける
- 第3章 すべてのオブジェクトに共通のメソッド
- 項目8 equals をオーバーライドする時は一般契約に従う
- 項目9 equals をオーバーライドする時は、常に hashCode をオーバーライドする.
- 項目10 toString を常にオーバーライドする
- 項目11 clone を注意してオーバーライドする
- 項目12 Comparable の実装を検討する
- 第4章 クラスとインタフェース
- 項目13 クラスとメンバーへのアクセス可能性を最小限にする
- 項目14 public のクラスでは、public のフィールドではなく、アクセッサーメソッドを使う
- 項目15 可変性を最小限にする
- 項目16 継承よりコンポジションを選ぶ
- 項目17 継承のために設計および文書化する、でなければ継承を禁止する
- 項目18 抽象クラスよりインタフェースを選ぶ
- 項目19 型を定義するためだけにインタフェースを使用する
- 項目20 タグ付クラスよりクラス階層を選ぶ
- 項目21 戦略を表現するために関数オブジェクトを使用する
- 項目22 非 static のメンバークラスより static のメンバークラスを選ぶ
- 第5章 ジェネリックス
- 項目23 新たなコードで原型を使用しない
- 項目24 無検査警告を取り除く
- 項目25 配列よりリストを選ぶ
- 項目26 ジェネリック型を使用する
- 項目27 ジェネリックメソッドを使用する
- 項目28 API の柔軟性向上のために境界ワイルドカードを使用する
- 項目29 型安全な異種コンテナーを検討する
- 第6章 enum とアノテーション
- 項目30 int 定数の代わりに enum を使用する
- 項目31 序数の代わりにインスタンスフィールドを使用する
- 項目32 ビットフィールドの代わりに EnumSet を使用する
- 項目33 序数インデックスの代わりに EnumMap を使用する
- 項目34 拡張可能な enum をインタフェースで模倣する
- 項目35 命名パターンよりアノテーションを選ぶ
- 項目36 常に Override アノテーションを使用する
- 項目37 型を定義するためにマーカーインタフェースを使用する
- 第7章 メソッド
- 項目38 パラメータの正当性を検査する
- 項目39 必要な場合には、防御的にコピーする
- 項目40 メソッドのシグニチャを注意深く設計する
- 項目41 オーバーロードを注意して使用する
- 項目42 可変長引数を注意して使用する
- 項目43 null ではなく、空配列か空コレクションを返す
- 項目44 すべての公開 API 要素に対してドキュメントコメントを書く
- 第8章 プログラミング一般
- 項目45 ローカル変数のスコープを最小限にする
- 項目46 従来の for ループより for-each ループを選ぶ
- 項目47 ライブラリーを知り、ライブラリーを使う
- 項目48 正確な答えが必要ならば、 float と double を避ける
- 項目49 ボクシングされた基本データより基本データ型を選ぶ
- 項目50 他の型が適切な場所では、文字列を避ける
- 項目51 文字列結合のパフォーマンスに用心する
- 項目52 インタフェースでオブジェクトを参照する
- 項目53 リフレクションよりインタフェースを選ぶ
- 項目54 ネイティブメソッドを注意して使用する
- 項目55 注意して最適化する
- 項目56 一般的に受け入れられている命名規約を守る
- 第9章 例外
- 項目57 例外的状態にだけ例外を使用する
- 項目58 回復可能な状態にはチェックされる例外を、プログラミングエラーには実行時例外を使用する
- 項目59 チェックされる例外を不必要に使用するのを避ける
- 項目60 標準例外を使用する
- 項目61 抽象概念に適した例外をスローする
- 項目62 各メソッドがスローするすべての例外を文書化する
- 項目63 詳細メッセージにエラー記録情報を含める
- 項目64 エラーアトミック性に努める
- 項目65 例外を無視しない
- 第10章 並行性
- 項目66 共有された可変データへのアクセスを同期する
- 項目67 過剰な同期は避ける
- 項目68 スレッドよりエグゼキューターとタスクを選ぶ
- 項目69 wait と notify よりコンカレンシーユーティリティを選ぶ
- 項目70 スレッド安全性を文書化する
- 項目71 遅延初期化を注意して使用する
- 項目72 スレッドスケジューラに依存しない
- 項目73 スレッドグループを避ける
- 第11章 シリアライズ
- 項目74 Serializable を注意して実装する
- 項目75 カスタムシリアライズ形式の使用を検討する
- 項目76 防御的に readObject を書く
- 項目77 インスタンス制御に対しては、 readResolve より enum 型を選ぶ
- 項目78 シリアライズされたインスタンスの代わりに、シリアライズ・プロキシを検討する
- 付録 初版に対応する項目
- 参考文献
- 索引