What this book covers
Chapter 1, What is Refactoring?, starts with the fundamental concepts, explaining what is meant by refactoring and why it is important. Faced with many possible opportunities for refactoring, let’s learn to understand how to give each opportunity the right importance, i.e., which one to refactor first. We also understand when it is not necessary to refactor.
Chapter 2, Good Coding Habits, covers the topic of writing high-quality code by day-to-day habits. What is good code? What is bad code? We will delve into this and briefly explore the concept of clean code. We’ll talk about the SOLID principles of software design, and also about the importance of (not using) side effects and mutability and common causes of bad code.
Chapter 3, Code Smells, is about the most frequent “red flags” that you can step into when going through your codebase; those red flags should immediately catch the eye of a professional. Recognizing them (and thus avoiding them) is a crucial part of our skills.
Chapter 4, Testing, is about the importance of the testing phase. Why is it important and why do you have to test as often as you can? We’ll learn about unit testing and how we can be sure that most of our codebase is covered by tests. We’ll go into Test Driven Development.
Chapter 5, Refactoring Techniques, is an overview of the main “tricks” that we can adopt to get rid of the code smells we discovered in Chapter 3. We’ll learn to write better methods and move code when necessary; we’ll organize data and simplify both conditional logic and method calls. We’ll also discuss generalization.
Chapter 6, Metaprogramming, is about... not writing code! In other terms, we can use well-tested and well-grounded frameworks and libraries to write the code for us, avoiding reinventing the wheel.
Chapter 7, Static and Dynamic Analysis, talks about how we can be sure we’re on the right path. The chapter delves into the concept of code analysis and program analysis, also exploring some tools that can be very useful in understanding how far we are from the quality threshold we want to set.
Chapter 8, Crafting Quality Every Day, tells us about the little and big actions that we can put in place during our day-to-day work routine. From code versioning to code formatting, from code reviews to pair programming, we can incorporate a lot of small but constant effort to keep our codebase clean and maintainable.
Chapter 9, Mastering Software Architecture, lifts our gaze and talks about the architecture of a software project. It explains what architecture is and what it is made of; it tells us about the main architectural patterns. Just as we did for individual pieces of code, we discussed which are the main architectural red flags to avoid.