Get best-in-class engineering practices to help you write more-robust, bug-free code. Two Microsoft .NET development experts share real-world examples and proven methods for optimizing the software development life cycle—from avoiding costly programming pitfalls to making your development team more efficient. Managed code developers at all levels will find design, prototyping, implementation, debugging, and testing tips to boost the quality of their code—today.
Optimize each stage of the development process—from design to testing—and produce higher-quality applications.
Use metaprogramming to reduce code complexity, while increasing flexibility and maintainability
Treat performance as a feature—and manage it throughout the development life cycle
Apply best practices for application scalability
Employ preventative security measures to ward off malicious attacks
Practice defensive programming to catch bugs before run time
Incorporate automated builds, code analysis, and testing into the daily engineering process
Implement better source-control management and check-in procedures
Establish a quality-driven, milestone-based project rhythm—and improve your results!
Chapter 1 Code Quality in an Agile World
Traditional Methods of Software Development
Agile Methods of Software Development
Moving Quality Upstream
Inside Microsoft: Windows Live Hotmail Engineering
Tactics for Writing Solid Code
Summary
Key Points
Chapter 2 Class Design and Prototyping
Collaboration in Visual Studio
Think First, Code Later
Software Modeling
Summary
Key Points
Chapter 3 Metaprogramming
What Is Metadata?
Metadata in Managed Applications
Metadata in Your Applications
Inside Microsoft: Configuration Management in Windows Live Spaces
Summary
Key Points
Chapter 4 Performance Is a Feature
Common Performance Challenges
Analyzing Application Performance
Tactics for Improving Web Application Performance
Incorporating Performance Best Practices
Inside Microsoft: Tackling Live Search Performance
Summary
Key Points
Chapter 5 Designing for Scale
Understanding Application Scalability
Tactics for Scaling Web Applications
Inside Microsoft: Managing the Windows Live Messenger Service Infrastructure
Summary
Key Points
Chapter 6 Security Design and Implementation
Common Application Security Threats
Principles for Designing Secure Applications
SD3+C Strategy and Practices for Secure Applications
Understanding .NET Framework Security Principles
Additional Security Best Practices
Summary
Key Points
Chapter 7 Managed Memory Model
Managed Heap
Garbage Collection
Finalization
Pinning
Tips for the Managed Heap
CLR Profiler
Summary
Key Points
Chapter 8 Defensive Programming
Defensive Programming and C#
Warnings
Code Review
Software Testing
Defensive Programming with Classes
Defensive Programming Without Examples
Design Patterns
Summary
Key Points
Chapter 9 Debugging
Overflow Bug
Pentium FDIV Bug
Symbols
Preemptive Debugging
Proactive Debugging
Debugging
Debugging Tools
Tracing
Production Debugging
Summary
Key Points
Chapter 10 Code Analysis
Invest in the Test Process
Incorporate Automated Code Analysis
Use Metrics to Understand Quality
Inside Microsoft: Managing Quality for the Microsoft.com Web Analytics Platform
Donis Marshall has over 20 years of experience in designing and building enterprise software utilizing Microsoft technologies for leading companies across industry segments. He is an endorsed trainer for Microsoft Global Learning Services, and has been training Microsoft developers and engineers for many years. Donis is the author of the Programming Microsoft Visual C# 2005, Programming Microsoft Visual C# 2008, and Solid Code, published by Microsoft Press.
John Bruno is a Microsoft senior program manager with 10 years of industry experience. He specializes in designing and building scalable Web-based applications and services with Microsoft .NET and has played key roles in launching Windows Live™ and the service architecture and developer platform of Windows Live Spaces, which is delivered to more than 100 million users worldwide.