Legacy Code

Bringing Complex Legacy Software Under Control — C++ Edition

Art for Legacy Code Check Out A Preview

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.

Highlights

Legacy Strategies
Legacy Strategies: Tame your legacy code via expert strategies and guidance from genuine gurus. Learn more...
Expert Videos
Expert Videos: Learn tools & techniques by watching short videos from industry experts. Learn more...
Integrated Forums
Integrated Forums: Ask questions, get expert replies and read fascinating discussions. Learn more...

Includes

  • 4-6 hours of content
  • 94 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
Download Starting Code 33
Investigation Time 34
Make OrderTest Fast! 35
Extract And Override Solution ← Click to Preview 36
Welcome To CRRAP! 38
A Typical Piece of CRRAP 39
Brief Overview Of The Output 40
The Cheat Sheet 41
The Rules Of The Game 42
Start with the Universals 44
Step 1: Reformat and Commit 45
Step 1: Our Version 46
Step 2: Eliminate the Noise 47
Step 2: Our Version 48
Step 3: Get To Testability 49
Crazy Mike Hits A Dead End! 50
Legacy Pattern: Mini-Scoop It! 51
Legacy Pattern: Maxi-Scoop 52
Pindown Tests 53
Exercise: Pin Down One Path 54
Where to from here? 56
The Mission ← Click to Preview 57
Technique: Control Your Namespace ← Click to Preview 58
Technique: Think Small 59
Technique: Keep Tests Excellent ← Click to Preview 60
The Cheat Sheet Again 61
Getting Started 62
Hints Page 63
Hints Page 2 64
What is Static Cling? 66
A Class With Static Variables 67
Unexpected Test Failure 68
A Bad Solution: Reset Shared Data 69
A Better Solution: Remove Side-Effects 70
Creation Complexity 71
Solution: A Factory 72
Exercise: Static Cling 74
Problems! 75
A Close Look At The SongPlayer Class 76
Test Failures 77
Different Failures? 78
Download The Code 79
Your Mission 80
Our Solution 81
What About Privates? 83
How Interesting Are Privates? 84
If They Are Not Interesting, Don't Bother Testing Them 85
Ease the Restriction 86
Friend of Friend 87
Use The Preprocessor 88
How Private Are Privates? 89
Test Derived Class 90
The Refactoring Approach: Extract a Helper Class ← Click to Preview 91
Privates, Design, And Testability 92
Conclusion: Where to Next? 94

Related Items

Volume Licensing

Have Any Questions?

Highlights

Legacy Strategies
Legacy Strategies: Tame your legacy code via expert strategies and guidance from genuine gurus. Learn more...
Expert Videos
Expert Videos: Learn tools & techniques by watching short videos from industry experts. Learn more...
Integrated Forums
Integrated Forums: Ask questions, get expert replies and read fascinating discussions. Learn more...

Includes

  • 4-6 hours of content
  • 94 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
Download Starting Code 33
Investigation Time 34
Make OrderTest Fast! 35
Extract And Override Solution ← Click to Preview 36
Welcome To CRRAP! 38
A Typical Piece of CRRAP 39
Brief Overview Of The Output 40
The Cheat Sheet 41
The Rules Of The Game 42
Start with the Universals 44
Step 1: Reformat and Commit 45
Step 1: Our Version 46
Step 2: Eliminate the Noise 47
Step 2: Our Version 48
Step 3: Get To Testability 49
Crazy Mike Hits A Dead End! 50
Legacy Pattern: Mini-Scoop It! 51
Legacy Pattern: Maxi-Scoop 52
Pindown Tests 53
Exercise: Pin Down One Path 54
Where to from here? 56
The Mission ← Click to Preview 57
Technique: Control Your Namespace ← Click to Preview 58
Technique: Think Small 59
Technique: Keep Tests Excellent ← Click to Preview 60
The Cheat Sheet Again 61
Getting Started 62
Hints Page 63
Hints Page 2 64
What is Static Cling? 66
A Class With Static Variables 67
Unexpected Test Failure 68
A Bad Solution: Reset Shared Data 69
A Better Solution: Remove Side-Effects 70
Creation Complexity 71
Solution: A Factory 72
Exercise: Static Cling 74
Problems! 75
A Close Look At The SongPlayer Class 76
Test Failures 77
Different Failures? 78
Download The Code 79
Your Mission 80
Our Solution 81
What About Privates? 83
How Interesting Are Privates? 84
If They Are Not Interesting, Don't Bother Testing Them 85
Ease the Restriction 86
Friend of Friend 87
Use The Preprocessor 88
How Private Are Privates? 89
Test Derived Class 90
The Refactoring Approach: Extract a Helper Class ← Click to Preview 91
Privates, Design, And Testability 92
Conclusion: Where to Next? 94

Related Items