テストコードの注入から始めるレガシーコードのリファクタリング
テストコードの注入から始めるレガシーコードのリファクタリング
レガシーコードに立ち向かう一歩目は、とりあえずテストを書いてみることだ
本書について
本書籍では、レガシーコードに対しての最初の一歩を踏み出したいと考えている人に向けて書いた本になります。その際、テストコードの記述にも重点をおきながら、レガシーコードをリファクタリングする過程を説明しています。
本書籍では下記のような人を想定読者としています。
- テスト駆動開発(以下、TDD)を知っている
- レガシーコードやリファクタリングとは何か知っている
- 実際の現場でレガシーコードと出会っている
- レガシーコードに対してリファクタリングを行う時に、まず何から手を付ければ良いのか分からない
- 今後、自分がレガシーコードを作らないように心がけたい
本書籍を読み、写経することで、下記の 2 点が身につきます。
- 少しずつテストケースを追加して改善していく方法を実感する
- 苦しくないリファクタリングの方法を学ぶ
本書籍では Java および JUnit5 を用いて解説していきますが、基本的な考え方はどの言語でも似ていると考えていますので、読者の皆さんの言語に置き換えて読むことが可能です。
また、本書籍を購入していただいた方には、第3章で扱っている「要件を元に責務ごとにロジックを分割して整理する」のリファクタリングの様子を収めたライブコーディングのビデオも付いてきます。
目次
-
第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 参考文献
- おわりに
Leanpubは無条件かつノーリスクで100%の満足を保証します
Leanpubでお買い上げいただいた書籍は、ご購入後60日以内であれば全額返金いたします。払い戻しはわずか2クリックで完了します。払い戻し処理は手作業で行うため、完了まで数日かかる場合があります。詳しくは利用規約をご覧ください。
80% Royalties. Earn $16 on a $20 book.
We pay 80% royalties. That's not a typo: you earn $16 on a $20 sale. If we sell 5000 non-refunded copies of your book or course for $20, you'll earn $80,000.
(Yes, some authors have already earned much more than that on Leanpub.)
In fact, authors have earned$12,307,240writing, publishing and selling on Leanpub.
Learn more about writing on Leanpub
無料更新。無料アップデート。 DRMフリー。
Leanpubの本を購入すると、著者が本を更新している限り、無料で更新されます!多くの著者は、Leanpubを使用して、執筆中の書籍を出版しています。いつ本を購入したか、いくら支払ったかに関係なく、すべての読者は無料のアップデートを入手できます(無料も含む)。
Leanpubの本はPDF(コンピューター用)、EPUB(iPad用)、MOBI(Kindle用)のフォーマットに対応してます。本に含まれるフォーマットは、このページの右上隅に表示されます。
Leanpubの本には、DRMコピー防止のナンセンスがないため、サポートされているデバイスで簡単に読むことができます
Top Books
OpenIntro Statistics
David Diez, Christopher Barr, Mine Cetinkaya-Rundel, and OpenIntroA complete foundation for Statistics, also serving as a foundation for Data Science.
Leanpub revenue supports OpenIntro (US-based nonprofit) so we can provide free desk copies to teachers interested in using OpenIntro Statistics in the classroom and expand the project to support free textbooks in other subjects.
More resources: openintro.org.
Personal Finance
Jason AndersonThis textbook provides an in-depth analysis on personal finance that is both practical and straightforward in its approach. It has been written in such a way that the readers can gain knowledge without getting overwhelmed by the technical terms. Suitable for both beginners and advanced learners.
Getting to Know IntelliJ IDEA
Trisha Gee and Helen ScottIf we treat our IDE as a text editor, we are doing ourselves a disservice. Using a combination of tutorials and a questions-and-answers approach, Getting to Know IntelliJ IDEA will help you find ways to use IntelliJ IDEA that enable you to work comfortably and productively as a professional developer.
R Programming for Data Science
Roger D. PengThis book brings the fundamentals of R programming to you, using the same material developed as part of the industry-leading Johns Hopkins Data Science Specialization. The skills taught in this book will lay the foundation for you to begin your journey learning data science. Printed copies of this book are available through Lulu.
C++20 - The Complete Guide
Nicolai M. JosuttisAll new language and library features of C++20 (for those who know previous C++ versions).
The book presents all new language and library features of C++20. Learn how this impacts day-to-day programming, to benefit in practice, to combine new features, and to avoid all new traps.
Buy early, pay less, free updates.
Other books:
Mastering STM32 - Second Edition
Carmine NovielloWith more than 1200 microcontrollers, STM32 is probably the most complete ARM Cortex-M platform on the market. This book aims to be the most complete guide around introducing the reader to this exciting MCU portfolio from ST Microelectronics and its official CubeHAL and STM32CubeIDE development environment.
Stats One
William FooteMachine Learning Q and AI
Sebastian Raschka, PhDHave you recently completed a machine learning or deep learning course and wondered what to learn next? With 30 questions and answers on key concepts in machine learning and AI, this book provides bite-sized bits of knowledge for your journey to becoming a machine learning expert.
Ansible for DevOps
Jeff GeerlingAnsible is a simple, but powerful, server and configuration management tool. Learn to use Ansible effectively, whether you manage one server—or thousands.
Gradual Modularization for Ruby and Rails
Stephan HagemannGet yourself a new tool to manage your Rails application and your growing engineering organization! Prevent the ball-of-mud (and fix it!). Go for microservices or SOA if it makes sense not just because you don't have any other tool. Do all this through a low-overhead tool: packages. Enable better conversations to make practical changes today.
Top Bundles
- #1
Software Architecture
2 Books
"Software Architecture for Developers" is a practical and pragmatic guide to modern, lightweight software architecture, specifically aimed at developers. You'll learn:The essence of software architecture.Why the software architecture role should include coding, coaching and collaboration.The things that you really need to think about before... - #2
CCIE Service Provider Ultimate Study Bundle
2 Books
Piotr Jablonski, Lukasz Bromirski, and Nick Russo have joined forces to deliver the only CCIE Service Provider training resource you'll ever need. This bundle contains a detailed and challenging collection of workbook labs, plus an extensively detailed technical reference guide. All of us have earned the CCIE Service Provider certification... - #3
1500 QUIZ COMMENTATI (3 libri)
3 Books
Tre libri dei QUIZ MMG Commentati al prezzo di DUE! I QUIZ dei concorsi ufficiali di Medicina Generale relativi agli anni: 2000-2001-2003-2012-2013-2014-2015-2016-2017-2018-2019-2020-2021 +100 inediti Raccolti in unico bundle per aiutarvi nello studio e nella preparazione al concorso. All'interno di ogni libro i quiz sono stati suddivisi per... - #4
Pattern-Oriented Memory Forensics and Malware Detection
2 Books
This training bundle for security engineers and researchers, malware and memory forensics analysts includes two accelerated training courses for Windows memory dump analysis using WinDbg. It is also useful for technical support and escalation engineers who analyze memory dumps from complex software environments and need to check for possible... - #5
Practical FP in Scala + Functional event-driven architecture
2 Books
Practical FP in Scala (A hands-on approach) & Functional event-driven architecture, aka FEDA, (Powered by Scala 3), together as a bundle! The content of PFP in Scala is a requirement to understand FEDA so why not take advantage of this bundle!? - #7
Linux Administration Complet
4 Books
Ce lot comprend les quatre volumes du Guide Linux Administration :Linux Administration, Volume 1, Administration fondamentale : Guide pratique de préparation aux examens de certification LPIC 1, Linux Essentials, RHCSA et LFCS. Administration fondamentale. Introduction à Linux. Le Shell. Traitement du texte. Arborescence de fichiers. Sécurité... - #9
Development and Deployment of Multiplayer Online Games, Part ARCH. Architecture (Vol. I-III)
3 Books
What's the Big Idea? The idea behind this book is to summarize the body of knowledge that already exists on multiplayer games but is not available in one single place.And quite a fewof the issues discussed within this series (planned as three nine volumes ~300 pages each), while known in the industry, have not been published at all (except for... - #10
Modern C++ Collection
3 Books
Get All about Modern C++C++ Standard Library, including C++20Concurrency with Modern C++, including C++20C++20Each book has about 200 complete code examples. Updates are included. When I update one of the books, you immediately get the updated bundle. You can expect significant updates to each new C++ standard (C++23, C++26, .. ) and also...