STEVE MAGUIRE

 
Don’t fix bugs later; fix them now.
- Steve Maguire, Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Never allow the same bug to bite you twice.
- Steve Maguire, Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Don’t keep "trying" solutions until you find one that works. Take the time to find the correct solution.
- Steve Maguire, Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Handle your special cases just one.
- Steve Maguire, Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Don't clean up code unless the cleanup is critical to the product's success.
- Steve Maguire
Enable all compiler warnings.
- Steve Maguire - Chapter 1: A Hypothetical Compiler. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Use lint to catch bugs your compiler may miss.
- Steve Maguire - Chapter 1: A Hypothetical Compiler. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Use a second algorithm to validate your results.
- Steve Maguire - Chapter 2: Assert Yourself. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Step through every code path.
- Steve Maguire - Chapter 4: Step Through Your Code. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Create thorough subsystem checks, and use them often.
- Steve Maguire - Chapter 3: Fortify Your Subsystems. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Shred your garbage.
- Steve Maguire - Chapter 3: Fortify Your Subsystems. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Document unclear assertions.
- Steve Maguire - Chapter 2: Assert Yourself., Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Don't hide bugs when you program defensively.
- Steve Maguire - Chapter 2: Assert Yourself., Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Either remove implicit assumptions, or assert that they are valid.
- Steve Maguire - Chapter 2: Assert Yourself., Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Maintain both ship and debug versions of your code.
- Steve Maguire - Chapter 2: Assert Yourself., Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Strip undefined behavior from your code.
- Steve Maguire - Chapter 2: Assert Yourself., Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Use assertions to detect impossible conditions.
- Steve Maguire - Chapter 2: Assert Yourself., Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Use assertions to validate all function arguments.
- Steve Maguire - Chapter 2: Assert Yourself., Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Design your tests carefully. Nothing should be arbitrary.
- Steve Maguire - Chapter 3: Fortify Your Subsystem , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Eliminate random behavior. Force bugs to be reproducible.
- Steve Maguire - Chapter 3: Fortify Your Subsystems. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
If something happens rarely, force it to happen often.
- Steve Maguire - Chapter 3: Fortify Your Subsystems. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Strive to implement transparent integrity checks.
- Steve Maguire - Chapter 3: Fortify Your Subsystems. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
As you step through code, focus on data flow.
- Steve Maguire - Chapter 4: Step Through Your Code. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Don't wait until you have a bug to step through your code.
- Steve Maguire - Chapter 4: Step Through Your Code. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Always look for, and eliminate, flaws in your interfaces.
- Steve Maguire - Chapter 5: Candy-Machine Interfaces. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Define explicit function arguments. Eliminate ambiguity.
- Steve Maguire - Chapter 5: Candy-Machine Interfaces. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Don't write multipurpose functions. Write separate functions to allow stronger argument validation.
- Steve Maguire - Chapter 5: Candy-Machine Interfaces. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Make code intelligible at the point of call. Avoid Boolean arguments.
- Steve Maguire - Chapter 5: Candy-Machine Interfaces. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Make it hard to ignore error conditions. Don't bury error codes in return values.
- Steve Maguire - Chapter 5: Candy-Machine Interfaces. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Write comments that emphasize potential hazards.
- Steve Maguire - Chapter 5: Candy-Machine Interfaces. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Write functions that, given valid inputs, cannot fail.
- Steve Maguire - Chapter 5: Candy-Machine Interfaces. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Always ask, "Can this variable or expression over- or underflow?"
- Steve Maguire - Chapter 6: Risky Business. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Implement 'The Task' just once. Handle special cases just once.
- Steve Maguire - Chapter 6: Risky Business. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Implement your designs as accurately as possible.
- Steve Maguire - Chapter 6: Risky Business. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Don't reference memory that you don't own.
- Steve Maguire - Chapter 7: Treacheries of the Trade. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Throw away your bag of tricks. Be truly clever: Write boring code.
- Steve Maguire - Chapter 7: Treacheries of the Trade. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Tight C code does not guarantee efficient machine code.
- Steve Maguire - Chapter 7: Treacheries of the Trade. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Don't allow unnecessary flexibility.
- Steve Maguire - Chapter 8: The Rest Is Attitude. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Don't clean up code unless the cleanup is critical to the product's success.
- Steve Maguire - Chapter 8: The Rest Is Attitude. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Don't fix bugs later; fix them now.
- Steve Maguire - Chapter 8: The Rest Is Attitude. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Don't implement nonstrategic features. There is no free lunch.
- Steve Maguire - Chapter 8: The Rest Is Attitude. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Don't keep 'trying' solutions until you find one that works. Take the time to find the correct solution.
- Steve Maguire - Chapter 8: The Rest Is Attitude. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Fix the cause, not the symptom.
- Steve Maguire - Chapter 8: The Rest Is Attitude. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514
Write and test code in small chunks. Always test your code, even if that means your schedule will slip.
- Steve Maguire - Chapter 8: The Rest Is Attitude. , Writing Solid Code: Microsoft's Techniques for Developing Bug-Free C Programs by Steve Maguire , ISBN: 1556155514