PR
productive-dev/refactoring-dotnet
An example project demonstrating cleaning up legacy code and improving testability
refactoring-dotnet
An example project demonstrating cleaning up legacy code in a .NET Core MVC project
This repository was created for the Productive Dev YouTube series on refactoring legacy code (here's the link).
Key concepts
- Improving testability
- Inversion of control via dependency injection
- Message-sending between objects
- Making smaller things
- Improving naming
- Extracting configuration
- Programming to abstractions instead of implementations
- Replacing conditional logic with polymorphism
- Using factory methods
- Using async / await
- Using
Task.FromResultfor non-asynchronous overiddes ofTaskmethods - Writing unit and integration tests
- Monitoring code quality using static code analysis
- Creating a continuous integration loop
To Follow along via YouTube series
The main branch contains the result of refactoring the legacy code. The legacy_code branch contains the starting point of the project, from where the refactoring begins.
- Clone the repository
- Checkout the
legacy_codebranch - Complete the refactor
On this page
Languages
C#81.3%HTML13.3%CSS4.7%JavaScript0.7%
Contributors
GNU General Public License v2.0
Created October 13, 2020
Updated September 2, 2025