Front cover image for リファクタリング : 既存のコードを安全に改善する

リファクタリング : 既存のコードを安全に改善する

マーチン・ファウラーが本書で真価を世に示してから15年, 「リファクタリング」が当たり前で身近な作業となったいま, さらに読みやすくリファクタリングを施した日本語版, 再誕. 実践に照らした広範な訳文の見直しに加え, リファクタリング・カタログの使い勝手を向上. さらに, 付録「Javaのバージョンアップに伴うリファクタリングをめぐる環境の変化」を収録
eBook, Japanese, 2014
新装版シン
オーム社, Tokyo, 2014
1 online resource (487 pages)
9784274050190, 427405019X
1031965504
表紙; クレジット; 献辞; 目次; 日本語版の再発行にあたって; 謝辞; 本書に寄せて; はじめに; リファクタリングとは; 本書の内容; 本書の対象となる読者; 先人の礎の上に; 謝辞; 第1章 リファクタリング
最初の例; スタート地点; リファクタリングの第一歩; statementメソッドの分割, 再配置; 料金計算の条件文をポリモーフィズムに置き換える; まとめ; 第2章 リファクタリングの原則; リファクタリングの定義; リファクタリングを行う理由; いつリファクタリングをすべきか; 管理者を説得するには; リファクタリングの問題点; リファクタリングと設計; リファクタリングとパフォーマンス; リファクタリングの起源; 第3章 コードの不吉な臭い; 重複したコード; 長すぎるメソッド; 巨大なクラス; 長すぎるパラメータリスト; 変更の偏り; 変更の分散; 特性の横恋慕; データの群れ; 基本データ型への執着; スイッチ文; パラレル継承; 怠け者クラス; 疑わしき一般化; 一時的属性; メッセージの連鎖; 仲介人; 不適切な関係; クラスのインタフェース不一致; 未熟なクラスライブラリ; データクラス; 相続拒否; コメント; 第4章 テストの構築; 自己テストコードの意義; JUnitテストフレームワーク; テストの追加. 第5章 リファクタリング・カタログに向けてリファクタリングの形式; 参照の検索; 本書のリファクタリングの成熟度; 第6章 メソッドの構成; メソッドの抽出; メソッドのインライン化; 一時変数のインライン化; 問い合せによる一時変数の置き換え; 説明用変数の導入; 一時変数の分離; パラメータへの代入の除去; メソッドオブジェクトによるメソッドの置き換え; アルゴリズムの取り替え; 第7章 オブジェクト間での特性の移動; メソッドの移動; フィールドの移動; クラスの抽出; クラスのインライン化; 委譲の隠蔽; 仲介人の除去; 外部メソッドの導入; 局所的拡張の導入; 第8章 データの再編成; 自己カプセル化フィールド; オブジェクトによるデータ値の置き換え; 値から参照への変更; 参照から値への変更; オブジェクトによる配列の置き換え; 観察されるデータの複製; 単方向関連の双方向への変更; 双方向関連の単方向への変更; シンボリック定数によるマジックナンバーの置き換え; フィールドのカプセル化; コレクションのカプセル化; データクラスによるレコードの置き換え; クラスによるタイプコードの置き換え; サブクラスによるタイプコードの置き換え; State/Strategyによるタイプコードの置き換え; フィールドによるサブクラスの置き換え; 第9章 条件記述の単純化. 条件記述の分解条件記述の統合; 重複した条件記述の断片の統合; 制御フラグの削除; ガード節による入れ子条件記述の置き換え; ポリモーフィズムによる条件記述の置き換え; ヌルオブジェクトの導入; 表明の導入; 第10章 メソッド呼び出しの単純化; メソッド名の変更; パラメータの追加; パラメータの削除; 問い合せと更新の分離; メソッドのパラメタライズ; 明示的なメソッド群によるパラメータの置き換え; オブジェクトそのものの受け渡し; メソッドによるパラメータの置き換え; パラメータオブジェクトの導入; setメソッドの削除; メソッドの隠蔽; Factory Methodによるコンストラクタの置き換え; ダウンキャストのカプセル化; 例外によるエラーコードの置き換え; 条件判定による例外の置き換え; 第11章 継承の取り扱い; フィールドの引き上げ; メソッドの引き上げ; コンストラクタ本体の引き上げ; メソッドの引き下げ; フィールドの引き下げ; サブクラスの抽出; スーパークラスの抽出; インタフェースの抽出; 階層の平坦化; Template Methodの形成; 委譲による継承の置き換え; 継承による委譲の置き換え; 第12章 大きなリファクタリング; 継承の切り離し; 手続き的な設計からオブジェクト指向への変換; プレゼンテーションとドメインの分離; 階層の抽出. 第13章 リファクタリング, 再利用, 現実現実の壁; 開発者が自分たちのプログラムをリファクタリングしようと思わない理由; 現実の壁(再び); リファクタリングのリソースと参考文献; ソフトウェア再利用および技術移転に与える影響; 最後に; 参考文献; 第14章 リファクタリングツール; ツールを用いたリファクタリング; リファクタリングツールの技術的規範; リファクタリングツールの実践的規範; まとめ; 第15章 部品から全体へ; 付録 Javaのバージョンアップに伴うリファクタリングをめぐる環境の変化; Javaの進歩; テスティングフレームワークの進歩; Java 7で本書コードを再びリファクタリングする; 参考文献; リファクタリングのヒント; 訳者あとがき; 索引; 著者および寄稿者紹介; 訳者紹介; 奥付