Java言語で学ぶリファクタリング入門

著者 :
  • ソフトバンク クリエイティブ
3.90
  • (24)
  • (31)
  • (33)
  • (0)
  • (0)
本棚登録 : 386
感想 : 27
本ページはアフィリエイトプログラムによる収益を得ています
  • Amazon.co.jp ・本 (448ページ)
  • / ISBN・EAN: 9784797337990

作品紹介・あらすじ

どうすれば、きれいで読みやすいコードになるのか?Javaの実例を通して学ぶリファクタリング入門書の決定版。ファウラーの名著『リファクタリング』に登場する、すべてのリファクタリングのエッセンスを簡潔にまとめた「リファクタリング一覧」(巻末付録)付き。

感想・レビュー・書評

並び替え
表示形式
表示件数
絞り込み
  • 【書誌情報】
    『Java言語で学ぶリファクタリング入門』
    著者:結城 浩
    定価:3,520円(本体3,200円+10%税)
    発売日:2007年1月29日(月)
    ISBN:978-4-7973-3799-0
    サイズ:B5変
    ページ数:448
    [https://www.sbcr.jp/product/4797337990/]

    [https://www.hyuki.com/ref/]

    【目次】
    はじめに
    本書の図について

    第0章 リファクタリングとは
      リファクタリングと「不吉な匂い」
      リファクタリング・カタログ
      リファクタリングのエッセンス
      リファクタリングQ&A
    第1章《シンボリック定数によるマジックナンバーの置き換え》
    第2章《制御フラグの削除》
    第3章《アサーションの導入(表明の導入)》
    第4章《ヌルオブジェクトの導入》
    (第5章〜第10章では、クラスを整える中規模のリファクタリングを学びます)
    第5章《メソッドの抽出》
    第6章《クラスの抽出》
    第7章《クラスによるタイプコードの置き換え》
    第8章《サブクラスによるタイプコードの置き換え》
    第9章《State/Strategyによるタイプコードの置き換え》
    第10章《例外によるエラーコードの置き換え》
    (第11章〜第15章では、クラスの関係を整える大規模のリファクタリングを学びます)
    第11章《Factory Methodによるコンストラクタの置き換え》
    第12章《観察されるデータの複製》
    第13章《委譲による継承の置き換え》
    第14章《委譲の隠蔽》
    第15章《継承の分割》

    付録
    付録A リファクタリング一覧(マーチン・ファウラーの書籍『リファクタリング』に登場するリファクタリングすべてを要約して紹介します)
    付録B JUnit(Javaのユニットテストを行うフレームワークJUnitを紹介します)
    付録C 参考文献とWebサイト

    索引

  • 2007年出版のため流石に今のJava 11以降でこれをそのまま採用するということは無いと感じた。
    NULL オブジェクトパターンなどは今でも使うことはあるかもしれないが全体的ここで紹介されているパターンをそのまま使うことはほとんど無いだろう。もし使うとすればJDK6時代に書かれた古いコードを脈々と受け継いできた現場でリファクタリングをする機会に恵まれたときぐらいではないだろうか。

    他のJVMでない言語ならこれを採用することもあるかもしれないが言語の機能の違いもあるので他のその言語にあったリファクタリング本を読むほうが有益だと感じた。

  • リファクタリング入門書。デザインパターンのほうも合わせて読みたいです。一番後ろにある付録のリファクタリング一覧と章の冒頭にあるリファクタリング・カタログによって復習がしやすい構成で、説明も丁寧です。徹頭徹尾ステップバイステップ。

  • 【選書者コメント】アプリ開発してみたくて。

  • 少し優しかったが一度に一つだけの事をやるという精神は大事。

  • デザインパターンを学ぶ時は、リファクタリングから学習を始めると具体的なコード例を見れるので理解しやすい、という話を聞いたので、リファクタリングの本を読んでみた。

    説明も分かりやすく良いと思う。

  • とてもわかりやすいし、付録も便利

  • リファクタリングの仕方がいくつかの種類によって分けられて記述されている.それぞれの方法に見合った手法を用いてリファクタリングすることができる.実行する前とする時とした後の3段階に加え演習問題が複数用意されているため初心者にはとてもいい図書だと思う.

  • リファクタリングに目覚めて、今までやっていたのはリファクタリングではなかったと思うに至り、慌てて読んだ本書。何が今まで考えていたのと違うのか?

    どちらかと言えばトレンドウォッチャーな方だと思うのだけど、日本にリファクタリングという言葉が持ち込まれた頃から知っていたし、実践していたつもりだった。まあ、テストコードを書かずに、画面で動作確認してたりすることもあるので、「そんなのリファクタリングぢゃぁない!」と言われたりもするが、そこは真摯に受け止めるとして…。ちゃんとテストコードを書いてやっていたリファクタリングもリファクタリングではなかった…と思ったのだ。

    今まで「テストグリーンのままコードの改変を続ける」なんてことはできるハズがないと思っていた。まず、変更したいコードに書き換えて、通らなくなったテストを通すために、少しずつバグを改修していって、テストグリーンになったらリファクタリング終了…というやり方でやっていた。簡単なものだったり、今日の占いで一位だったりした日には、一発でテストグリーンになることもあるのだが、まあ、大抵はそーうまくはゆかない。いつまでたってもテストを通らずに、キリが悪いまま夜遅くに帰宅するハメになったりする。「あ〜、テストって面倒くせぇ〜」と海に向かって叫んだり…したことはないけれども。。 (--;

    だが、初体験してしまったのだ。テストグリーンのままステップバイステップでゴールに辿り着くってのを。どんな初体験も、それは人生を変える素晴らしいものだと再認識。 :-)

    長らくチーム開発をしていなかったのだが、去年からチーム開発の世界に舞い戻り、その時に少しだけ技巧に富んだリファクタリングを見せてもらってはいた。正直、何が起こったのかをちゃんと認識できなかったが、とりあえず凄い技だとは思った。でも、言うなれば「リフティングはうまいね。でも、サッカーでどこまで効果的なの?」みたいな感想だった。身に付けたいとは思ったけれども、優先順位はそんなに高くないなぁ〜などと思っていたっけかな。

    きっかけはペアプロパートナーの新人女子の言葉だった。「赤になったらすぐに青にするんですよ!」と、ふざけたハッパに「はいはい、青にすればいいんでしょ〜」と、キーボードに手を伸ばすと…。なぜか、見えちゃったのだ。テストグリーンのままゴールに到達する道筋が。少しコードをいじって、テストを実行して、また少しコードをいじって…を繰り返し、ゴールに辿り着いてしまったのだ。いや〜、驚いた。まるで詰め将棋のようだった。「ここで飛車をすてて、桂馬で追いつめて、最後は歩で詰み!」みたいな感じ。おっと、打ち歩詰めは禁じ手だった。 (><)

    まさか、自分でできるとは思ってもいなかった体験で、少しハイな精神状態になってたと思う。リファクタリング・ハイなどという言葉があるのかどうかは知らないが、とても気持ちよいのだ。頭の中がすべてコードで満たされて、外の世界とは切り離されてたように思う。なんか、ブツブツしゃべってたかもしれないけれども、たぶん、口が勝手に動いているだけだったような気がする。

    そんなリファクタリング・ハイをもう一度、味わいたくて、コードをいじり続けているのだが、残念ながらテストレッドな時間が長い状態が続いている。どうやら、テストグリーンのままリファクタリングできるパターンが私の中に少ないらしい。…という訳で、パターンを増やすべく、本書を手に取った次第。「おおぉ、ここで初手は香車を底に打つのかぁ〜!」と新たな発見にワクワクしながら、アッとゆー間に読了してしまった。

    これがリファクタリングだったのか…と認識を新たにした今、テストコードの見方がぜんぜん違ってくる。今まで品質保証的な意味合いで面倒なだけだったのだが、リファクタリングのしやすいテストコードとなるとテストの書き方も変わって来そうだ。脳に入れなきゃならない情報が多過ぎるテストは楽しくないし、速くないから。そうなると、設計もシンプルで小さくしないと…。う〜む、ずいぶん世界の見え方が変わってくるなぁ〜。

    リファクタリング・ハイよ、もう一度〜!!!

  • 後半は読み飛ばしながら。
    リファクタリング前後のクラス図比較がいい。というか、これと少し説明があればいいかな。

全27件中 1 - 10件を表示

著者プロフィール



「2023年 『数学ガールの秘密ノート/数を作ろう』 で使われていた紹介文から引用しています。」

結城浩の作品

この本を読んでいる人は、こんな本も本棚に登録しています。

有効な左矢印 無効な左矢印
小山 龍介
有効な右矢印 無効な右矢印
  • 話題の本に出会えて、蔵書管理を手軽にできる!ブクログのアプリ AppStoreからダウンロード GooglePlayで手に入れよう
ツイートする
×