多数のコード例と、レガシーコードと戦うときに考えるための理論が書かれています。
スプラウドメソッドやラッパーメソッドはレガシーコードでなくても基本的なコーディング方法論としても有益でしょう。
これを読んだら、つぎは「リファクタリング」がお勧めです。
この注文でお急ぎ便、お届け日時指定便を無料体験
Amazonプライム無料体験について
Amazonプライム無料体験について
プライム無料体験をお試しいただけます
プライム無料体験で、この注文から無料配送特典をご利用いただけます。
非会員 | プライム会員 | |
---|---|---|
通常配送 | ¥460 - ¥500* | 無料 |
お急ぎ便 | ¥510 - ¥550 | |
お届け日時指定便 | ¥510 - ¥650 |
*Amazon.co.jp発送商品の注文額 ¥3,500以上は非会員も無料
無料体験はいつでもキャンセルできます。30日のプライム無料体験をぜひお試しください。
¥4,620¥4,620 税込
発送元: Amazon.co.jp 販売者: Amazon.co.jp
¥4,620¥4,620 税込
発送元: Amazon.co.jp
販売者: Amazon.co.jp
¥2,980¥2,980 税込
無料配送 1月7日-9日にお届け
発送元: Deer Place JP 販売者: Deer Place JP
¥2,980¥2,980 税込
無料配送 1月7日-9日にお届け
発送元: Deer Place JP
販売者: Deer Place JP
無料のKindleアプリをダウンロードして、スマートフォン、タブレット、またはコンピューターで今すぐKindle本を読むことができます。Kindleデバイスは必要ありません。
ウェブ版Kindleなら、お使いのブラウザですぐにお読みいただけます。
携帯電話のカメラを使用する - 以下のコードをスキャンし、Kindleアプリをダウンロードしてください。
レガシーコード改善ガイド: 保守開発のためのリファクタリング 単行本 – 2009/7/1
マイケル C.フェザーズ
(著),
平澤 章
(翻訳)
このページの読み込み中に問題が発生しました。もう一度試してください。
{"desktop_buybox_group_1":[{"displayPrice":"¥4,620","priceAmount":4620.00,"currencySymbol":"¥","integerValue":"4,620","decimalSeparator":null,"fractionalValue":null,"symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"x7m8TQLxYxnKWov312s4JXUZssRlDXeh7MYe85nx9zebde3Ue3hM3QzK8dwp2kDqV02i6azcE30d3zfjqidDkJV73SeanmwqaACmgxy0Dm9qkv2cokY1t3EQKblvvfNn","locale":"ja-JP","buyingOptionType":"NEW","aapiBuyingOptionIndex":0}, {"displayPrice":"¥2,980","priceAmount":2980.00,"currencySymbol":"¥","integerValue":"2,980","decimalSeparator":null,"fractionalValue":null,"symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"x7m8TQLxYxnKWov312s4JXUZssRlDXehH8JGtV5zZJhBvhQsFmf8152kvt2hn8sdesNK3nNbQNxGYtkMHOg6yDaEaGm4H5cwlTXl71Fc4zQOpvwYmNwFhnBRBVdx06rm0mAsF8Om2s%2BgkUP5sMAIUMs1b17kQ0oyHALcy04vfuiuNsEnLNGDQ6NIOn5bxrI3","locale":"ja-JP","buyingOptionType":"USED","aapiBuyingOptionIndex":1}]}
購入オプションとあわせ買い
あなたは、Javaや.netでレガシーコードを書いていませんか?
本書は、システム保守の現場でありがちな、構造が複雑で理解できないようなコードに対する分析手法・対処方法について解説します。つまり、コードを理解し、テストできるようにし、リファクタリングを可能にし、機能を追加できるテクニックを紹介しています。レガシーコードとは、メインフレームのアプリケーションのことではなく、変更することが困難なコードを指しています。著者は、本書で「私にとって、テストがないコードはレガシーコードだ」「テストコードがあれば振舞いを変えても、すばやく変更、確認することができる。もし、テストコードがなければ振舞いを変更しても、それが正しいのか、悪いのか判断できない」「ソースコードがきれいで、良い構造であれば十分か?そうではない。もし、テストコードなしで大幅な修正を加えるとしたら、信じられないほどのスキルと明確な理解が必要になる」と述べています。本書はJava、C、C++でサンプルを記述していますが、記載されているテクニックは言語依存するものではないため、他の言語(Delphi、Visual Basic、COBOL、FORTRAN)でも使えます。
本書は、システム保守の現場でありがちな、構造が複雑で理解できないようなコードに対する分析手法・対処方法について解説します。つまり、コードを理解し、テストできるようにし、リファクタリングを可能にし、機能を追加できるテクニックを紹介しています。レガシーコードとは、メインフレームのアプリケーションのことではなく、変更することが困難なコードを指しています。著者は、本書で「私にとって、テストがないコードはレガシーコードだ」「テストコードがあれば振舞いを変えても、すばやく変更、確認することができる。もし、テストコードがなければ振舞いを変更しても、それが正しいのか、悪いのか判断できない」「ソースコードがきれいで、良い構造であれば十分か?そうではない。もし、テストコードなしで大幅な修正を加えるとしたら、信じられないほどのスキルと明確な理解が必要になる」と述べています。本書はJava、C、C++でサンプルを記述していますが、記載されているテクニックは言語依存するものではないため、他の言語(Delphi、Visual Basic、COBOL、FORTRAN)でも使えます。
- 本の長さ449ページ
- 言語日本語
- 出版社翔泳社
- 発売日2009/7/1
- 寸法18.4 x 2.5 x 23.3 cm
- ISBN-104798116831
- ISBN-13978-4798116839
よく一緒に購入されている商品
対象商品: レガシーコード改善ガイド: 保守開発のためのリファクタリング
¥4,620¥4,620
最短で1月7日 火曜日のお届け予定です
在庫あり。
¥4,840¥4,840
最短で1月8日 水曜日のお届け予定です
残り4点(入荷予定あり)
¥4,180¥4,180
最短で1月7日 火曜日のお届け予定です
残り6点(入荷予定あり)
総額: $00$00
当社の価格を見るには、これら商品をカートに追加してください。
ポイントの合計:
pt
もう一度お試しください
追加されました
一緒に購入する商品を選択してください。
この商品をチェックした人はこんな商品もチェックしています
ページ: 1 / 1 最初に戻るページ: 1 / 1
出版社より
登録情報
- 出版社 : 翔泳社 (2009/7/1)
- 発売日 : 2009/7/1
- 言語 : 日本語
- 単行本 : 449ページ
- ISBN-10 : 4798116831
- ISBN-13 : 978-4798116839
- 寸法 : 18.4 x 2.5 x 23.3 cm
- Amazon 売れ筋ランキング: - 188,689位本 (本の売れ筋ランキングを見る)
- - 307位開発技法
- - 657位ソフトウェア開発・言語
- - 4,328位電気・通信 (本)
- カスタマーレビュー:
著者について
著者をフォローして、新作のアップデートや改善されたおすすめを入手してください。
著者の本をもっと見つけたり、似たような著者を調べたり、おすすめの本を読んだりできます。
著者の本をもっと見つけたり、似たような著者を調べたり、おすすめの本を読んだりできます。
カスタマーレビュー
星5つ中4.5つ
5つのうち4.5つ
67グローバルレーティング
評価はどのように計算されますか?
全体的な星の評価と星ごとの割合の内訳を計算するために、単純な平均は使用されません。その代わり、レビューの日時がどれだけ新しいかや、レビューアーがAmazonで商品を購入したかどうかなどが考慮されます。また、レビューを分析して信頼性が検証されます。
上位レビュー、対象国: 日本
レビューのフィルタリング中に問題が発生しました。後でもう一度試してください。
- 2014年6月3日に日本でレビュー済みAmazonで購入
- 2020年5月7日に日本でレビュー済みAmazonで購入C++で書かれたシステムでこの本に書かれた事を試してみたのですが、超大変で、くじけてしまいました。。
色々と試行錯誤してテストを作ったものの、テストでコードを保護するという理想には、程遠い、酷いテストケースの山が。。
リファクタリングに耐えられるようなテストコードの書き方が分からなかったのが致命的でした。
ちゃんとしたテストが書けていれば、例えばテスト対象をリファクタリングしても、同じテストでリファクタリング後のコードがテストできるハズなのですが・・・
自分の書いたテストだと・・・リファクタリングしたらテストコードの変更も必要になってしまうという。。
なので、ある程度、ちゃんとしたテストコードが書ける人が読むべき本なのかもしれません。
ただ、どのようなコードがテストしづらいのか?どのようなコードがテストしやすいコードなのか?
といった観点など設計のヒントは読むだけでも手に入りますので、テストが整備できなかったとしても読んだ価値はあったのではないかと思っています。
- 2012年4月28日に日本でレビュー済みAmazonで購入・自動テストが良い理由がわかった気がした。テストによって仕様が明確になり、安心して改変ができる。
・Java,C++関連がサンプルだが、他の言語(自分の場合はDelphiなんか)にも役に立つ考え方
・訳はあまり良くない。内容がわかっている人にとってはわかりやすいのかもしれないけど、やはり直訳的なものが目立ち、意味がわかりにくいところが多々あり。
・ある程度、開発に携わっている人でないと、初心者の勉強だとピンとこないところが多数だと思う。
・全く古さを感じさせず、現在でも十分に役に立つことが多数。
- 2012年6月1日に日本でレビュー済みレガシーシステムとはテストの無いコードである。
→テストが無ければ安心してコードが変更できない。
→しかしテストで保護するには、多くの変更が必要になる。
→どうコードを変更し、いかにしてテスト可能にするか?
というストーリーで、テストを導入する方法を豊富な事例と共に紹介しています。
責務が多すぎるクラス、数百行に渡るモンスターメソッド、分岐だらけのロジックなど、現場では当たり前のように出てくる「残念なコード」に対し、解決策を提示しています。
サンプルコードはJavaとC++が大半ですが、私はPHPで実践しました。
オブジェクト指向言語ならこの考え方は汎用的に使えます。
特に役に立ったのは以下の考え方です。
* コードの保護が最優先。保護されたコードは後でいくらでも修正・改善できる。
* 保護するために一時的にコードが醜くなっても構わない。
* 既存のひどいコードを直すよりテストで保護されたパーツで置き換える方が、結局早いし、後々も楽である。
* 仕様が全く不明なコードでも、仕様を把握するためだけのテストを書けば理解が進む。
私は全くテストが無く、「不吉な匂い」で満たされたシステムを担当させられましたが、この本のやり方を知ることで自信を持ってエンハンスができるようになりました。
なお、この本の内容はTDD(テスト駆動開発)を未体験の人にはピンと来ないことが多いと思われます。
「テストを先に書いて後からコードを直す」という手法が当たり前のように使われるからです。
TDDのやり方を習得していないと、この本だけではどう実践していいかわからないかもしれません。
そのため、まずはTDDを習得してから読むことをお勧めします。
- 2017年7月20日に日本でレビュー済みよろしくないコード引き継いだ時、役に立つ情報満載。ただ、説明が少しわかりにくい。テストに手段を選ぶな、と大きく理解。
- 2016年11月29日に日本でレビュー済みAmazonで購入組み込み半年目の新米です。
実際に保守作業をしてる中で、何も考えずでかいクラスにあるでかいメソッドに追加してました。
本書には「書いたあとうまく動くことを祈る書き方」といったような表現で書かれてましたが、的を得ていてなるほどなーと納得しました。
他にもまずテストを追加してその後処理を加えるTDDのこととか、テストを追加し辛い場合のインターフェイスを用いた手法やメソッドの抽出をして影響範囲を少しずつ狭めるところなど参考になりました。
ただ聞けばわかるのですが、いざ現場で実践しようとすると、ちょっと難易度が高いなぁという印象でした。(本質が理解できてない?)
その辺は読み込もうと思います。
- 2009年11月1日に日本でレビュー済みレガシーコードと聞いてイメージしたのは「仕様書も無く、設計やコーディングもメチャクチャ、おまけに当時の開発者はすでにいない。しかし重要なシステムであるためトラブル対応や改造は続けなければいけないこの上なく保守しにくい、担当者泣かせのソースコード」というものでした。しかし、本の帯にもあるように、ここでは自動化テストのないコードを「レガシーコード」と定義しています。
私がイメージしていたような「レガシーコード」には私自身、実際に泣かされることも多いため、「銀の弾丸」的なテクニックが載っていないかと期待していましたが、残念ながらこの本からはそのようなテクニックは見つかりませんでした。
この本が主にターゲットとしているのは、「ある程度オブジェクト指向設計に基づいたソースコード」です。オブジェクト指向ではコーディングされにくいVB/VBAや、JavaやC#なのに活用されている言語機能はC言語止まり、といったコードにはあまり向いていないかもしれません。
こういうケースはやはり地道に解析するしかないんですかね・・・。
とはいえ、星は5つです。
改めて自動化テストの重要性を確認する事ができましたし、テストを優先してメソッドの可視性をあえて上げる、といった発想が新鮮でした。
この本で書かれているリファクタリング技法はマーティンファウラーの「リファクタリング」と重なる部分も多いですが、それでも「テストのためのリファクタリング」という視点が新しいと思います。
そして何より「既存のコード」への対処方法をメインに扱った書籍というのは前例がないと思います。この本を読めば間違いなく、これまでにはなかったプログラムに対する新しい視点を持つ事が出来るようになるでしょう。
P.S.
保守開発に苦労している方はこちらの本も参考になるかもしれません。
=> 「派生開発」を成功させるプロセス改善の技術と極意
- 2016年2月18日に日本でレビュー済みAmazonで購入要するにインターフェイスとかを使って、本番用実装とテスト用実装を適宜差し替えて、テストを容易にしようという話なのだと思った。
複雑に絡み合った依存関係は整理しなければ、テストしやすくならない。テストしにくいコードをテストしやすく変えていくためのリファクタリングの話でもある。
そのためのテクニックが色々紹介されている。
ためになる部分は多かった本だと思う。