dev.to記事で紹介された技術書(洋書)と日本語版の翻訳本を紹介

Refactoring12

紹介された本(洋書)
日本語版(翻訳本)
Refactoring
Refactoring
Improving the Design of Existing Code

著者:Martin FowlerKent Beck

出版社:Addison-Wesley Professional

出版日:1999

リファクタリング 既存のコードを安全に改善する(第2版)
リファクタリング 既存のコードを安全に改善する(第2版)

著者:Martin Fowler

出版社:株式会社 オーム社

出版日:2019-11-29

概要:Users can dramatically improve the design, performance, and manageability of object-oriented code without altering its interfaces or behavior. "Refactoring" shows users exactly how to spot the best opportunities for refactoring and exactly how to do it, step by step.

概要:ソフトウェア開発の名著、第2版登場! リファクタリングは、ソフトウェアの外部的な振る舞いを保ったままで、内部の構造を改善する作業を指します。本書はリファクタリングのガイドブックであり、リファクタリングとは何か、なぜリファクタリングをすべきか、どこを改善すべきか、実際の事例で構成され、ソフトウェア開発者にとって非常に役立つものとなっています。 本第2版では、約20年前のオリジナル原稿の構成は変わらないものの、大幅に書き換えられているほか、サンプルコードがJavaからJava Scriptになるなど、現代的にアレンジされています。 はじめに リファクタリングとは? 本書の内容 本書の対象読者 先人の礎の上に 謝辞 第1章 リファクタリング――最初の例 スタート地点 着手前のコメント リファクタリングの第一歩 statement関数の分割 現況:入れ子になった関数がたくさん 計算とフォーマットにフェーズを分割 現況:二つのファイル(とフェーズ)への分離 型による計算処理の再編成 現況:ポリモーフィックなCalculatorでデータを作成 まとめ 第2章 リファクタリングの原則 リファクタリングの定義 二つの帽子 リファクタリングを行う理由 いつリファクタリングをすべきか リファクタリングの問題点 リファクタリングとアーキテクチャ、そしてYagni リファクタリングとソフトウェア開発プロセス リファクタリングとパフォーマンス リファクタリングの起源 自動化されたリファクタリング さらに興味のある方へ 第3章 コードの不吉な臭い 不可思議な名前 重複したコード 長い関数 長いパラメータリスト グローバルなデータ 変更可能なデータ 変更の偏り 変更の分散 特性の横恋慕 データの群れ 基本データ型への執着 重複したスイッチ文 ループ 怠け者の要素 疑わしき一般化 一時的属性 メッセージの連鎖 仲介人 インサイダー取引 巨大なクラス クラスのインタフェース不一致 データクラス 相続拒否 コメント 第4章 テストの構築 自己テストコードの意義 テストのためのサンプルコード 最初のテスト テストの追加 フィクスチャの変更 境界値の検査 これより先には 第5章 カタログの紹介 リファクタリングのフォーマット リファクタリングの選択 第6章 リファクタリングはじめの一歩 関数の抽出 関数のインライン化 変数の抽出 変数のインライン化 関数宣言の変更 変数のカプセル化 変数名の変更 パラメータオブジェクトの導入 関数群のクラスへの集約 関数群の変換への集約 フェーズの分離 第7章 カプセル化 レコードのカプセル化 コレクションのカプセル化 オブジェクトによるプリミティブの置き換え 問い合わせによる一時変数の置き換え クラスの抽出 クラスのインライン化 委譲の隠蔽 仲介人の除去 アルゴリズムの置き換え 第8章 特性の移動 関数の移動 フィールドの移動 ステートメントの関数内への移動 ステートメントの呼び出し側への移動 関数呼び出しによるインラインコードの置き換え ステートメントのスライド ループの分離 パイプラインによるループの置き換え デッドコードの削除 第9章 データの再編成 変数の分離 フィールド名の変更 問い合わせによる導出変数の置き換え 参照から値への変更 値から参照への変更 第10章 条件記述の単純化 条件記述の分解 条件記述の統合 ガード節による入れ子の条件記述の置き換え ポリモーフィズムによる条件記述の置き換え 特殊ケースの導入 アサーションの導入 第11章 APIのリファクタリング 問い合わせと更新の分離 パラメータによる関数の統合 フラグパラメータの削除 オブジェクトそのものの受け渡し 問い合わせによるパラメータの置き換え パラメータによる問い合わせの置き換え setterの削除 ファクトリ関数によるコンストラクタの置き換え コマンドによる関数の置き換え 関数によるコマンドの置き換え 第12章 継承の取り扱い メソッドの引き上げ フィールドの引き上げ コンストラクタ本体の引き上げ メソッドの押し下げ フィールドの押し下げ サブクラスによるタイプコードの置き換え サブクラスの削除 スーパークラスの抽出 クラス階層の平坦化 委譲によるサブクラスの置き換え 委譲によるスーパークラスの置き換え 文献リスト 訳者あとがき 索引 著者および寄稿者紹介(原稿執筆当時) 訳者紹介 奥付 リファクタリングリスト 不吉な臭いと、対処する一般的リファクタリング