レガシーコード改善ガイド(マイケル・C・フェザーズ ウルシステムズ株式会社 平澤 章 越智 典子 稲葉 信之 田村 友彦 小堀 真義 ウルシステムズ株式会社)|翔泳社の本
  1. ホーム >
  2. 書籍 >
  3. レガシーコード改善ガイド

レガシーコード改善ガイド


翻訳
翻訳
翻訳
翻訳
翻訳
翻訳
監修

形式:
書籍
発売日:
ISBN:
9784798116839
定価:
4,620(本体4,200円+税10%)
仕様:
B5変・472ページ
カテゴリ:
プログラミング・開発
キーワード:
#プログラミング,#開発環境,#開発手法,#Web・アプリ開発
シリーズ:
Object Oriented SELECTION

保守開発のためのリファクタリング!

本書は、システム保守の現場でありがちな、構造が複雑で理解できないような
コードに対する分析手法・対処手法について解説します。
つまり、「コードを理解し、テストできるようにし、リファクタリングを可能にし、
機能を追加できるテクニック」を紹介している書籍です。

本書には、以下のことが記載されています。
●仕様が分からないコードの分析方法
●仕様が分からないコードの修正方法、またテストコードの追加方法
●コードの修正で、疎結合な設計に部分的に改善する方法

また、本書には、以下のことは記載されていません。
●COBOLなどで記述されているメインフレーム上のアプリケーションの改修方法

【 対象読者】
●現行のシステムが仕様が分からず保守作業に悩む、保守担当者
●現行のシステムの修正作業は可能であるもののデグレーションに悩む、保守担当者
●疎結合な設計手法を知りたい技術者

本書はJava、C、C++でサンプルを記述していますが、
記載されているテクニックは言語依存するものではないため、
他の言語(Delphi、Visual Basic、COBOL、FORTRAN)でも使えます。

画像01
画像02
画像03
画像04

第1部 変更のメカニズム

第1章 ソフトウェアの変更
1.1 ソフトウェア変更の4つの理由
1.2 危険な変更

第2章 フィードバックを得ながらの作業
2.1 単体テストとは
2.2 上位レベルのテスト
2.3 テストによる保護
2.4 レガシーコードの変更手順

第3章 検出と分離
3.1 協調クラスの擬装

第4章 接合モデル
4.1 巨大な用紙の文字の羅列
4.2 接合部
4.3 接合部の種類

第5章 ツール
5.1 自動リファクタリングツール
5.2 モックオブジェクト
5.3 単体テストハーネス
5.4 一般的なテストハーネス

第2部 ソフトウェアの変更

第6章 時間がないのに変更しなければなりません
6.1 スプラウトメソッド
6.2 スプラウトクラス
6.3 ラップメソッド
6.4 ラップクラス
6.5 まとめ

第7章 いつまで経っても変更作業が終わりません
7.1 理解すること
7.2 遅延時間
7.3 依存関係の排除
7.4 まとめ

第8章 どうやって機能を追加すればよいのでしょうか?
8.1 テスト駆動開発(TDD)
8.2 差分プログラミング
8.3 まとめ

第9章 このクラスをテストハーネスに入れることができません
9.1 いらだたしいパラメータ
9.2 隠れた依存関係
9.3 複雑な生成
9.4 いらだたしグローバルな依存関係
9.5 恐るべきインクルードの依存関係
9.6 玉ねぎパラメータ
6.7 別名のパラメータ

第10章 このメソッドをテストハーネスで動かすことができません
10.1 隠れたメソッド
10.2 言語の「便利な」機能
10.3 検出できない副作用

第11章 変更する必要がありますが、どのメソッドをテストすればよいのでしょうか?
11.1 影響の調査
11.2 前方向の調査
11.3 影響の伝播
11.4 影響調査のためのツール
11.5 影響スケッチの単純化

第12章 1ヶ所にたくさんの変更が必要ですが、関係するすべてのクラスの依存関係を排除すべきでしょうか?
12.1 割り込み点
12.2 絞り込み点で設計を判断する
12.3 絞り込み点の落とし穴

第13章 変更する必要がありますが、どんなテストを書けばよいのかわかりません
13.1 仕様化テスト
13.2 クラスの仕様を明らかにする
13.3 狙いを定めたテスト
13.4 仕様化テストを書くための経験則

第14章 ライブラリへの依存で身動きが取れません

第15章 私のアプリケーションはAPI呼び出しだらけです

第16章 変更できるほど十分に私はコードを理解していません
16.1 メモを取る/スケッチを描く
16.2 印を付ける
16.3 試行リファクタリング
16.4 使用していないコードを削除する

第17章 私のアプリケーションには構造がありません
17.1 システムのストーリーを話す
17.2 白紙のCRC
17.3 会話の吟味

第18章 自分のテストコードが邪魔になっています
18.1 クラスの命名規約
18.2 テストコードの配置

第19章 私のプロジェクトはオブジェクト指向ではありませんが、どうすれば安全に変更できるでしょうか?
19.1 簡単なケース
19.2 困難なケース
19.3 新しい振る舞いの追加
19.4 オブジェクト指向の長所の活用
19.5 すべてはオブジェクト指向

第20章 このクラスは大きすぎて、もうこれ以上大きくしたくありません
20.1 責務の把握
20.2 その他の技法
20.3 先へ進む
20.4 クラスの抽出後

第21章 同じコードをいたるところで変更しています
21.1 最初のステップ

第22章 モンスターメソッドを変更する必要がありますが、テストを書くことができません
22.1 モンスターの変種
22.2 自動リファクタリング機能でモンスターに立ち向かう
22.3 手作業によるリファクタリングに挑戦
22.4 戦略

第23章 どうすれば何も壊していないことを確認できるでしょうか?
23.1 超集中編集
23.2 単一目的の編集
23.3 シグネチャの維持
23.4 コンパイラまかせ
23.5 ペアプログラミング

第24章 もうウンザリです。何も改善できません

第3部 依存関係を排除する手法

第25章 依存関係を排除する手法
25.1 パラメータの適合
25.2 メソッドオブジェクトの取り出し
25.3 定義の補完
25.4 グローバル参照のカプセル化
25.5 静的メソッドの公開
25.6 呼び出しの抽出とオーバーライド
25.7 Factory Methodの抽出とオーバーライド
25.8 getメソッドの抽出とオーバーライド
25.9 実装の抽出
25.10 インタフェースの抽出
25.11 インスタンス委譲の導入
25.12 静的setメソッドの導入
25.13 リンクによる置き換え
25.14 コンストラクタのパラメータ化
25.15 メソッドのパラメータ化
25.16 パラメータのプリミティブ化
25.17 メソッドと変数の引き上げ
25.18 依存関係の押し出し
25.19 関数ポインタによる関数の置き換え
25.20 getメソッドによるグローバル参照の置き換え
25.21 サブクラス化とメソッドのオーバーライド
25.22 インスタンス変数の入れ替え
25.23 テンプレートによる再定義
25.24 テキストによる再定義

付録A リファクタリング
A1 メソッドの抽出

付録B 用語集

本書は付属データの提供はございません。

お問い合わせ

内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。

正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。

利用許諾に関するお問い合わせ

本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。

追加情報はありません。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

対象の書籍は正誤表がありません。

最終更新日:2013年07月17日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷 084
下から1-2行目
6刷
ラップクラスを選択するほうが敷居が高くなります。
ラップクラスはより厳しい状況に対して適用します。

※リフローEPUBの場合、第6章の見出し「6.4 ラップクラス」の2つ目の番号付き箇条書きのすぐ上にある段落が該当箇所になります。
2013.07.17
1刷 270
下から12行目の太字部分
2刷
影響スケッチが影響スケッチと
機能スケッチが影響スケッチと

※リフローEPUBの場合、第20章の図20.5のすぐ下にあるグレー囲み内の最初の段落が該当箇所になります。
2009.08.17
1刷 435
「用語集」の「許容点(enabling point)」の説明文
2刷
どの振る舞い使うかを
どの振る舞い使うかを
2009.08.17
1刷 448
著者紹介
2刷
マイケル・フェザーズ
マイケル・C・フェザーズ
2009.09.04

感想・レビュー

さん

2021-09-05

「レガシーコードからの脱却」からの「レガシーコード改善ガイド」。「レガシーコードからの脱却」は如何にレガシーコードを書かないようにするか、既に存在してしまっているレガシーコードの規模を如何に小さくしていくかに重きを置いていたけれど、「レガシーコード改善ガイド」はその名の通りレガシーコードの改善に特化した本になっている。一通りざっと目を通しておくのももちろん良いのだが、どちらかと言えば手元に置いておいて、遭遇したレガシーコードの改善方法に悩んだ時に活用するハンドブック的な位置付けがしっくりきそう。

hideoku さん

2012-06-23

テストがないコードをテストで保護されたコードにリファクタリングしていく。その手立てがたくさん紹介されている。自動テストやテスト駆動開発に興味を持ったプログラマに読んでほしい本。コーディングのお勉強にもなった。

benjoe さん

2018-03-11

ク○コードだらけ!と噂を聞いたシステムの保守をやることになったので改善のヒントを!という事で読みました。 目から鱗!というほどの内容ではなかったけど共感を感じる内容。 改修ついでのリファクタリングに消極的な担当者の机に置いておいてやりたい。