Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Surviving Legacy Code
Jump Into the Deep End
Go!
Before You Continue In This Course
Ask Your Questions Here!
Two Streams of Content (Really! Read this before watching the videos!)
Before You Rush Into Changing Code...
Creating a Safe Environment for Changing Code (43:19)
Rescue the Code to Rescue the Environment (6:16)
The Coding Techniques
Cobbling Together Tests From What You Already Have (128:15)
The Surprising Difficulty of Deleting a Directory (12:33)
Figure Out What To Tease Apart With Subclass to Test (131:14)
Why I Don't Consider Subclass to Test An Anti-Pattern
Replace Inheritance with Delegation (133:24)
Extract Towards Composed Method (103:04)
Extract Pure Functions (129:05)
Case Studies and Other Questions
Just Use Return Values!
Golden Master, When There Are Database Clients All Over The Place
Should You Fix That Defect? Probably Not.
Surviving More Than Legacy Code
Getting Started With Surviving More Than Legacy Code
Managing the Risks of Rescuing Legacy Code
Legacy Code Disappoints
Authority and Responsibility For Design Decisions
Refactoring Without Tests: A Philosophical Quandary
The Learning Never Ends...
Putting It All Together
Emerging Implementations of an Emerging Interface: An Example
Extracting the Turn Workflow: Part 1
Exercise: Setting Up the Game
Case Study: Figma and incremental change
Short Takes
SMELL and REFACTOR (2:11)
Keep the Diffs Clean (2:01)
The Production Code Tests the Tests (0:58)
Put Related Code Close Together (1:15)
What I Type Should Match What I Say (0:59)
Anti-Patterns Aren't Just Bad Ideas (0:59)
The Ebb and Flow of Subclass to Test (3:15)
You Won't Know What You Want to Know Before You Need to Change Things (0:50)
Never Assume Anything Will Work (2:25)
I Write Tests Differently for Legacy Code (2:37)
Irrelevant Details Matter More in Legacy Code (3:28)
The "Obviously" Trap (1:53)
Reverse-Engineering the Essence of a Test (1:33)
Judging Safety Without Tests (2:34)
When In Doubt, Document More Details (2:28)
More Legacy Code, Less Confidence (1:40)
One Way To Find A Buried Domain Concept (1:38)
Why We Might Replace Inheritance (1:45)
Deciding When To Run the Golden Master (2:44)
Choosing the First Test to Refactor (2:03)
I Usually Make Nested Classes Static (1:40)
Too Much Success Can Make Me Nervous (0:57)
The Force of Deprecation (1:58)
Don't Panic When Collaborators Explode (2:35)
The Power of Abstraction (1:59)
Why I Let Myself Extract Methods Without Tests (2:36)
A Meditative Approach to Legacy Code (0:47)
To Fix Or Not To Fix (1:59)
Side Effects Are Your Worst Enemy (3:09)
Clearer Structures Help Me Infer Meaning (2:40)
The Ebb and Flow of Extract Towards Composed Method (2:06)
Extract Functions, Two Ways (2:15)
Fundamental Risk Management in Legacy Code (1:55)
Benevolent Manipulation (4:31)
Extras and Fun Stuff
Out Takes (6:17)
Anti-Patterns Aren't Just Bad Ideas
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock