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

ステップ・バイ・ステップで設計改善

結城浩

このページは、 書籍『Java言語で学ぶリファクタリング入門』 のサポートページです。 最新情報やサンプルプログラムなどを公開しています。

目次

はじめに

こんにちは、結城浩です。 このページは、 書籍『Java言語で学ぶリファクタリング入門』 のサポートページです。

リファクタリングは、デザインパターンやエクストリームプログラミングに並んで、ソフトウェア開発の重要な技法として注目されています。

きれいなソースは読むのが楽で、修正するのが楽で、デバッグするのが楽です。 これに対して、きたないソースはすべてが大変です。 ではどうすれば「きれいなソース」になるのでしょう。 きたないソースをどうすれば(新たなバグを出さずに)きれいなソースにできるのでしょう。 それに対する試みの1つが「リファクタリング」です。

本書『Java言語で学ぶリファクタリング入門』では、 Java言語を使って、リファクタリングの本質をていねいに解説します。

本書は、 ソフトバンクパブリッシング株式会社の『Java Developer』誌(2002年8月号〜2003年10月号)の連載記事 「結城浩のリファクタリング・レッスン」 をベースにしています。 本書の執筆にあたっては、連載原稿に対して無数の修正と加筆を行いました。

本書を通してリファクタリングを学び、ソフトウェアの体質改善を行いましょう!

どうぞご期待ください。

本書の想定読者

本書は、以下のような方にお勧めできる本です。

リファクタリングとは

「リファクタリング」とは、 外部からみたプログラムの振る舞いを変えずに、 プログラム内部の構造を整える技法のことです。 プログラムの「体質改善」と呼ばれることもあります。

プログラムは生きています。 プログラムは一度作ってそれでおしまいではなく、 バグを修正したり、機能を追加したり、 あるいはプログラムを構成している部品を他のプログラムで再利用したりします。

いきあたりばったりに修正したり、 目先のことだけを考えて機能追加していくと、 プログラムは次第に汚くなっていきます。 そして、読むのも、修正するのも、デバッグするのも難しくなります。 それはちょうど、健康管理をしていない人の体調がしだいに悪くなっていくのに似ています。

一見無駄なようであっても、時間をかけて健康管理し、食事や運動に気を遣うことで、体質改善ができます。 それと同じように、一見無駄なようであっても、リファクタリングを継続的に行っていれば、 スムーズな修正、確実な機能追加ができるのです。

本書ではJava言語を使って、リファクタリングの本質がよくわかるように解説しています。 本書を通してリファクタリングを学び、ソフトウェアの体質改善を行いましょう!

本書の目次

『Java言語で学ぶリファクタリング入門』
結城浩 著
ソフトバンククリエイティブ(株)刊
ISBN 978-4-7973-3799-0
ASIN 4797337990
3200円(税抜)

サンプルプログラムのダウンロード

本書のサンプルプログラムを以下からダウンロードできます。 アーカイブ展開後、readme.txtをお読みください。

誤りと訂正

すべて読者さんからのご指摘です。感謝します!

======================================================================
(2014-05-27)
p.228 : Fig.10-6
    誤:図中、java.lang.Errorがjava.lang.Exceptionのサブクラスになっている
    正:java.lang.Errorはjava.lang.Throwableのサブクラスである

======================================================================
(2009-08-23)
p.26 : Fig.1-2 : 《シンボリック定数によるマジックナンバーの置き換え》後のRobotクラス図
    誤:name
    正:_name
======================================================================
(2009-08-23)
p.93 : List 4-7 : 27行目
    誤:public NullLabel() {
    正:private NullLabel() {

======================================================================
(2009-08-23)
p.170 : List 8-3 : 14行目
    誤:public Shape() {
    正:protected Shape() {

======================================================================
(2009-08-23)
p.212 : Table 10-2
    誤:下記のクラスの説明が抜けている。
    正:+−−−−−+−−−−−−−−−−−−−+
        | Position |ロボットの位置を表すクラス|
        +−−−−−+−−−−−−−−−−−−−+
        | Direction|ロボットの向きを表すクラス|
        +−−−−−+−−−−−−−−−−−−−+

======================================================================
(2009-08-23)
p.243 : Fig.11-3 (一番下の Shapeクラス図)
    誤:+ createOval(下線が抜けている)
    正:+ createOval
        ------------

======================================================================
(2009-08-23)
p.243 : Fig.11-3 (ShapeRectangleクラスとShapeクラスの継承関係)
    誤:ShapeRectangleクラスからShapeクラスへの線が抜けている
    正:ShapeRectangleクラスからShapeクラスへの線がある

======================================================================
(2007-06-13)
p.290 : 1行目
    誤:仕事の移譲先
    正:仕事の委譲先
======================================================================
(2007-06-13)
p.346 : List 15-7 のタイトル
    誤:CVSPrinterクラス
    正:CSVPrinterクラス
======================================================================
(2007-02-12)
p.294 : Fig.13-5 : 第2刷で修正
    誤:setSead
    正:setSeed
======================================================================
(2007-02-12)
p.87 : 下から8, 9行目 : (二箇所) : 第2刷で修正
    誤:NulLabel
    正:NullLabel
======================================================================

ぜひ、感想をお送りください

あなたのご意見・感想をお送りください。

あなたの一言が大きなはげみとなりますので、どんなことでもどうぞ。

お名前
メール
学年・職業など
年齢
男性女性

※上の情報は、いずれも未記入でかまいません。

今年は西暦何年ですか? (迷惑書き込み防止のための質問)

メールならhyuki dot mail at hyuki dot comあてに。

更新履歴

豊かな人生のための四つの法則