{"id":13339542,"url":"https://github.com/productive-dev/refactoring-dotnet","last_synced_at":"2025-03-11T14:31:41.553Z","repository":{"id":117042689,"uuid":"303779560","full_name":"productive-dev/refactoring-dotnet","owner":"productive-dev","description":"An example project demonstrating cleaning up legacy code and improving testability","archived":false,"fork":false,"pushed_at":"2020-10-24T15:24:51.000Z","size":45,"stargazers_count":18,"open_issues_count":0,"forks_count":14,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-24T02:30:14.722Z","etag":null,"topics":["dotnet","legacy-code","refactoring","unit-test","unit-testing"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/productive-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-13T17:24:27.000Z","updated_at":"2024-10-08T11:27:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"69127479-4939-47c4-92f8-bf9865147d51","html_url":"https://github.com/productive-dev/refactoring-dotnet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/productive-dev%2Frefactoring-dotnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/productive-dev%2Frefactoring-dotnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/productive-dev%2Frefactoring-dotnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/productive-dev%2Frefactoring-dotnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/productive-dev","download_url":"https://codeload.github.com/productive-dev/refactoring-dotnet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243051897,"owners_count":20228288,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotnet","legacy-code","refactoring","unit-test","unit-testing"],"created_at":"2024-07-29T19:20:21.678Z","updated_at":"2025-03-11T14:31:41.513Z","avatar_url":"https://github.com/productive-dev.png","language":"C#","readme":"# refactoring-dotnet\n\nAn example project demonstrating cleaning up legacy code in a .NET Core MVC project\n\nThis repository was created for the Productive Dev YouTube series on refactoring legacy code ([here's the link](https://www.youtube.com/watch?v=uj0RWP3DdUo\u0026list=PL3_YUnRN3Uhh8H3Zw2M6KDdP3aAlbfT8j)). \n\n## Key concepts\n\n- Improving testability\n- Inversion of control via dependency injection\n- Message-sending between objects\n- Making smaller things\n- Improving naming\n- Extracting configuration\n- Programming to abstractions instead of implementations\n- Replacing conditional logic with polymorphism\n- Using factory methods\n- Using async / await\n- Using `Task.FromResult` for non-asynchronous overiddes of `Task` methods\n- Writing unit and integration tests\n- Monitoring code quality using static code analysis\n- Creating a continuous integration loop\n\n## To Follow along via YouTube series\nThe `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.\n\n- Clone the repository\n- Checkout the `legacy_code` branch\n- Complete the refactor\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproductive-dev%2Frefactoring-dotnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fproductive-dev%2Frefactoring-dotnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproductive-dev%2Frefactoring-dotnet/lists"}