テストコードの注入から始めるレガシーコードのリファクタリング

テストコードの注入から始めるレガシーコードのリファクタリング

レガシーコードに立ち向かう一歩目は、とりあえずテストを書いてみることだ

本書について

本書籍では、レガシーコードに対しての最初の一歩を踏み出したいと考えている人に向けて書いた本になります。その際、テストコードの記述にも重点をおきながら、レガシーコードをリファクタリングする過程を説明しています。

本書籍では下記のような人を想定読者としています。

  • テスト駆動開発(以下、TDD)を知っている
  • レガシーコードやリファクタリングとは何か知っている
  • 実際の現場でレガシーコードと出会っている
  • レガシーコードに対してリファクタリングを行う時に、まず何から手を付ければ良いのか分からない
  • 今後、自分がレガシーコードを作らないように心がけたい

本書籍を読み、写経することで、下記の 2 点が身につきます。

  • 少しずつテストケースを追加して改善していく方法を実感する
  • 苦しくないリファクタリングの方法を学ぶ

本書籍では Java および JUnit5 を用いて解説していきますが、基本的な考え方はどの言語でも似ていると考えていますので、読者の皆さんの言語に置き換えて読むことが可能です。

著者について

Yuya Kazama
Yuya Kazama

After graduating, he joined an internal tool development team for 2 years and gained experience in design and development. 4 years later, he worked as a QA for test automation and process improvement.

We are now educating ourselves on the importance of creating quality from the upstream process in parallel with our daily work.

Currently, he is participating in the launch team of QA, and is coaching how the QA team work with a small test base.

新卒から2年間、社内ツールの開発チームに参画し設計・開発の経験を積み、その後の4年はテスト自動化やプロセス改善など、QAとして従事。

普段の業務と並行して、上流工程から品質を作り込むことの大切さを啓蒙中。

現在は、QAの立ち上げチームに参画し、テストベースが少ない状態からQAチームが活動できる体制を整備・啓蒙している。

Table of Contents

  • 第1章 テストしづらい部分を分割する
    • 1.1 題材
    • 1.2 最初のテストコード
    • 1.3 仕様を理解してテストを作る
    • 1.4 別のテストケースを作る
    • 1.5 依存関係を見つける
    • 1.6 依存関係を削除する(その1)
    • 1.7 依存関係を削除する(その2)
    • 1.8 ここまでのまとめ
    • 1.9 実装コードをリファクタリングする
    • 1.10 要件が間違っているところを、テストケースを追加しながら修正する
    • 1.11 実装コードを分割するために、一部分をメソッド化する
    • 1.12 まだ確認していないロジックの確認を行う
    • 1.13 まとめ
  • 第2章 ロジックを分解して整理する
    • 2.1 題材
    • 2.2 とりあえずテストを実行する
    • 2.3 次のテストケースを加える
    • 2.4 switch文部分の実装コードをリファクタリングする
    • 2.5 別部分のロジックに注目する
    • 2.6 クラスを新たに作成する
    • 2.7 再び実装部分のリファクタリングをする
    • 2.8 残りの実装部分をリファクタリングをする
    • 2.9 責務を持つクラスにロジックを移動させる
    • 2.10 まとめ
  • 第3章 要件を元に責務ごとにロジックを分割して整理する
    • 3.1 題材
    • 3.2 とりあえずテストを実行する
    • 3.3 最初のメソッド切り出し
    • 3.4 実装コードを理解していきながらテストケースを追加する
    • 3.5 早期returnを目指し、ロジックをシンプルにしていく
    • 3.6 否定系のif文をなくす
    • 3.7 外側と内側にあるif文を入れ替える
    • 3.8 商品ごとにif文をまとめる
    • 3.9 それぞれの種類毎で処理ロジックをまとめて、インタフェース化を検討する
    • 3.10 Factory Methodパターンを用いる
    • 3.11 クラスの責務から考えたロジックの移動
    • 3.12 機能追加の対応
    • 3.13 まとめ
  • 付録A IDEの入力補助の画像解説
  • 付録B 参考文献
  • おわりに

Authors have earned$10,098,681writing, publishing and selling on Leanpub, earning 80% royalties while saving up to 25 million pounds of CO2 and up to 46,000 trees.

Learn more about writing on Leanpub

Leanpubは無条件かつノーリスクで100%の満足を保証します

Leanpubでお買い上げいただいた書籍は、ご購入後45日以内であれば全額返金いたします。払い戻しはわずか2クリックで完了します。払い戻し処理は手作業で行うため、完了まで数日かかる場合があります。詳しくは利用規約をご覧ください。

Free Updates. DRM Free.

If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).

Most Leanpub books are available in PDF (for computers), EPUB (for phones and tablets) and MOBI (for Kindle). The formats that a book includes are shown at the top right corner of this page.

Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.

Learn more about Leanpub's ebook formats and where to read them

Write and Publish on Leanpub

Authors and publishers use Leanpub to publish amazing in-progress and completed ebooks, just like this one. You can use Leanpub to write, publish and sell your book as well! Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks. Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. It really is that easy.

Learn more about writing on Leanpub