Learn how to improve the maintainability of C# code using modern tools and techniques so you and your team can resolve technical debt and work safely and efficiently with legacy code. Software projects start as brand-new “greenfield” projects, but invariably become muddied down in technical debt far sooner than we expect. In Refactoring with C# we’ll explore what technical debt is and how it arises before walking through the process of safely refactoring C# code using modern tooling in Visual Studio and more recent C# language features using C# 12 and .NET 8. This book will guide you through the process of refactoring safely through advanced unit testing with XUnit and libraries like Moq, Snapper, and Scientist .NET.
We’ll explore maintainable code through SOLID principles and defensive coding techniques made possible in newer versions of C#. We’ll also cover code analysis and writing custom Roslyn Analyzers to detect and resolve issues unique to your code. The nature of coding is changing and we’ll explore using AI with GitHub Copilot Chat to refactor, test, document, and generate code before ending with a discussion of communicating technical debt to leadership and getting organizational buy-in to refactor your code in enterprise organizations and on agile teams.
By the end of this book you’ll understand the nature of refactoring and see how you can safely, effectively, and repeatably pay down the technical debt in your application while continuing to add value to your business. This book is for any developer familiar with C# who wants to improve the code they work with on a day-to-day basis. While this book will be most beneficial to developers with only a year or two of experience, even senior engineers and engineering managers will get something out of this book as we explore not just the process of refactoring, but advanced techniques with libraries like Moq, Snapper, Scientist .NET and by writing custom Roslyn Analyzers and even applying AI through GitHub Copilot Chat and modern language features with .NET 8 and C# 12.