※本書の販売は終了いたしました。本書の改訂版である「リファクタリング 既存のコードを安全に改善する(第2版)」を販売しておりますので、こちらをご利用下さい。
関連サイト
本書の関連ページが用意されています。
内容紹介
(※本書の第2版である『リファクタリング 既存のコードを安全に改善する(第2版)』も販売中です。)
プログラムに潜む扱いにくい部分を見つけ出し、その動作を変えずに内部の構造を改善していくためのテクニックを整理したマーティン・ファウラー氏によるソフトウェア開発の名著『リファクタリング プログラミングの体質改善テクニック』(Refactoring:Improving the Design of Existing Code)が、オリジナルの訳者による丁寧な見直しと現代的なJava開発環境による「再リファクタリング」を施した書き下ろし付録を収録して再発行!
旧版の価値を知るベテランはもちろん、これからソフトウェア開発に携わる新人にも必読の一冊です。
書誌情報
- 著者: Martin Fowler(著), 児玉公信, 友野晶夫, 平澤章, 梅澤真史(訳)
- ページ数: 488ページ(PDF版換算)
- 対応フォーマット: PDF
- 出版社: オーム社
対象読者
プログラマー、旧リファクタリングの読者
著者について
Martin Fowler
数十年にわたってビジネスへのオブジェクト指向の適用に尽力する独立コンサルタント。ヘルスケア、金融取引、企業財務などの分野におけるシステムのコンサル経験を持つ。顧客にはクライスラー、シティバンク、英国民保健サービス、アンダーセン・コンサルティング、ネットスケープ・コミュニケーションズなどが名を連ねる。オブジェクト指向、UML、パターンに関する講演多数。『アナリシスパターン』や『UML モデリングのエッセンス』などの著書がある。
児玉公信
(株)情報システム総研取締役副社長。技術士(情報工学)、博士(情報学)。
最近の仕事は企業情報システムの基幹システムをドメイン主導で再構築すること。いくつかの大学で非常勤講師も務める。著書に『UML モデリングの本質(第2 版)』、『UML モデリング入門』(以上、日経BP 社)、『システム開発の見積りのための実践ファンクションポイント法(改訂版)』(日本能率協会マネジメントセンター)など。情報処理学会技術士委員会委員長、文部科学省科学技術・学術審議会専門委員。座右の銘は「明日できることは今日やらない」(冗談です)だが、今日やることすら積み残す毎日。
友野晶夫
早稲田大学理工学部卒。IT 企業勤務を経て、独立。現在、個人としてIT コンサルタントを営む。近年、肉体のリファクタリングに取り組み徐々に成果を得つつある。
平澤章
ウルシステムズ株式会社ディレクター。メインフレームからオープンシステム、マイコンまで多種多様なシステム開発を経験した後、2001 年にウルシステムズのスタートアップに参画する。著書に『オブジェクト指向でなぜつくるのか(第2 版)』、『UML モデリングレッスン』(以上、日経BP 社)。訳書に『レガシーコード改善ガイド』(共訳、翔泳社)、『ドメイン特化言語』(共訳、ピアソン桐原)などがある。生涯一技術者を追求しながら、管理職業務も極めようと、二兎を追う日々を過ごしている。
梅澤真史
京都大学文学部アメリカ文学科卒業。東京出身。
オージス総研、豆蔵にてオブジェクト指向関係のコンサルティング、開発業務に従事した後、合同会社ソフトウメヤを立ち上げ現在に至る。得意技は分散オブジェクト。2003 年度IPA 未踏事業スーパークリエータ。著書に『自由自在Squeak プログラミング』(ソフト・リサーチ・センター)、訳書に『サクサクSmalltalk』(東京電機大学出版局)などがある。座右の銘「A rolling stone gathers no moss(米国)」、「勢い加えて大きくまわれ」、「三度の飯よりSmalltalk」。趣味は多摩川にて土手に座り、宇宙を見ながらメッセージを送る。
URL: http://github.com/mumez
目次
日本語版の再出版にあたって
- 謝辞
本書に寄せて
はじめに
- リファクタリングとは
- 本書の内容
- 本書の対象となる読者
- 先人の礎の上に
- 謝辞
第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で本書コードを再びリファクタリングする