By Mike Hill

Do you work with CRRAP: Code Requiring Remedial Attention Promptly? Legacy code is everywhere, so it helps to learn how to work with it effectively. Experience how experts use proven patterns to conquer legacy code challenges and then practice your skills on an extensive, real-world exercise.



Get this Album

Volume Licensing

Have Any Questions?

Highlights

Legacy Strategies: Tame your legacy code via expert strategies and guidance from genuine gurus. Learn more...
Expert Videos: Learn tools & techniques by watching short videos from industry experts. Learn more...

Integrated Forums: Ask questions, get expert replies and read fascinating discussions. Learn more...

Includes

  • 4-6 hours of content
  • 96 pages
  • 6 Videos
  • 3 Exercises
  • Solution code and videos
  • Platform-independent code
  • Support for Visual Studio
  • Support for Eclipse CDT
  • Uses Google Test

Contents

You Are Here 3
What Is Legacy? 4
Why Care About Legacy? 5
The Top Three Activities With Legacy Code 6
Testability 7
Hurdles To Microtesting 8
How To Proceed? 9
A Chicken And Egg Problem? 10
The Legacy Stance 12
Element One: Stop Digging ← Click to Preview 13
Element Two: Start Stepping 14
Element Three: More Microtests! 15
Some Important Non-Technical Techniques 16
Developer Sign-off 17
Lunch and Learn (Study Group) 18
Lunch and Learn (Lottery) 19
The Big Visible Chart 20
Refactoring Budget 21
Now, Back To Your Regularly Scheduled Technique 22
Extract and Override: The Universal Pliers 24
The Context: An Awkward Chunk Of Code 25
The Technique: Isolate And Test Around 26
Diagrams 27
How Much Code To Extract? ← Click to Preview 28
Why You Should NOT Use Extract And Override 29
Why You SHOULD Use Extract And Override 30
Order Processing 32
Installing Our Plugin 33
Download Starting Code 34
Investigation Time 35
Make OrderTest Fast! 36
Extract And Override Solution ← Click to Preview 37
Welcome To CRRAP! 39
A Typical Piece of CRRAP 40
Brief Overview Of The Output 41
The Cheat Sheet 42
The Rules Of The Game 43
Start with the Universals 45
Step 1: Reformat and Commit 46
Step 1: Our Version 47
Step 2: Eliminate the Noise 48
Step 2: Our Version 49
Step 3: Get To Testability 50
Crazy Mike Hits A Dead End! 51
Legacy Pattern: Mini-Scoop It! 52
Legacy Pattern: Maxi-Scoop 53
Pindown Tests 54
Installing Our Plugin 55
Exercise: Pin Down One Path 56
Where to from here? 58
The Mission ← Click to Preview 59
Technique: Control Your Namespace ← Click to Preview 60
Technique: Think Small 61
Technique: Keep Tests Excellent ← Click to Preview 62
The Cheat Sheet Again 63
Getting Started 64
Hints Page 65
Hints Page 2 66
What is Static Cling? 68
A Class With Static Variables 69
Unexpected Test Failure 70
A Bad Solution: Reset Shared Data 71
A Better Solution: Remove Side-Effects 72
Creation Complexity 73
Solution: A Factory 74
Exercise: Static Cling 76
Problems! 77
A Close Look At The SongPlayer Class 78
Test Failures 79
Different Failures? 80
Download The Code 81
Your Mission 82
Our Solution 83
What About Privates? 85
How Interesting Are Privates? 86
If They Are Not Interesting, Don't Bother Testing Them 87
Ease the Restriction 88
Friend of Friend 89
Use The Preprocessor 90
How Private Are Privates? 91
Test Derived Class 92
The Refactoring Approach: Extract a Helper Class ← Click to Preview 93
Privates, Design, And Testability 94
Conclusion: Where to Next? 96

Related Items

Supported Browsers

  • Latest Firefox
  • Internet Explorer 8+
  • Latest Chrome
  • Latest Safari

Operating Systems

  • Windows
  • Linux
  • Mac OS X

Development Tools

You can use whatever developments tools you prefer. If you do use an IDE (Integrated Development Environment), many (though not all) of our labs come with projects pre-configured for Eclipse, IntelliJ and Visual Studio.

Speakers or headphones are required for our videos.

Flash is required to view charts or watch videos — download for free.