{"id":19560466,"url":"https://github.com/codelytv/refactoring-code_smells-design_patterns","last_synced_at":"2025-04-12T19:47:25.062Z","repository":{"id":37082337,"uuid":"296282963","full_name":"CodelyTV/refactoring-code_smells-design_patterns","owner":"CodelyTV","description":"♻️ Example projects illustrating Code Smells in order to apply Refactoring techniques","archived":false,"fork":false,"pushed_at":"2024-08-17T17:39:21.000Z","size":4865,"stargazers_count":575,"open_issues_count":21,"forks_count":135,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-03T22:10:00.557Z","etag":null,"topics":["clean-code","code-smells","design-patterns","java","javascript","kotlin","php","refactoring","refactoring-exercise","refactoring-kata","refactorings","typescrit"],"latest_commit_sha":null,"homepage":"https://codely.tv/pro/cursos","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CodelyTV.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-09-17T09:39:40.000Z","updated_at":"2025-03-13T01:16:00.000Z","dependencies_parsed_at":"2023-01-28T23:46:18.555Z","dependency_job_id":"5574d16f-b0f0-4943-9c49-e17cecb50386","html_url":"https://github.com/CodelyTV/refactoring-code_smells-design_patterns","commit_stats":null,"previous_names":["codelytv/refactoring-code_smells-design_patterns","codelytv/refactoring-code-smells"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodelyTV%2Frefactoring-code_smells-design_patterns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodelyTV%2Frefactoring-code_smells-design_patterns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodelyTV%2Frefactoring-code_smells-design_patterns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodelyTV%2Frefactoring-code_smells-design_patterns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CodelyTV","download_url":"https://codeload.github.com/CodelyTV/refactoring-code_smells-design_patterns/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248625497,"owners_count":21135513,"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":["clean-code","code-smells","design-patterns","java","javascript","kotlin","php","refactoring","refactoring-exercise","refactoring-kata","refactorings","typescrit"],"created_at":"2024-11-11T05:07:39.896Z","updated_at":"2025-04-12T19:47:25.032Z","avatar_url":"https://github.com/CodelyTV.png","language":"PHP","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://codely.com\"\u003e\n    \u003cimg src=\"https://user-images.githubusercontent.com/10558907/170513882-a09eee57-7765-4ca4-b2dd-3c2e061fdad0.png\" width=\"300px\" height=\"92px\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003e\n  Refactoring from Code Smells to Clean Code\n  \u003cbr /\u003e\n  🧼💩 🔜 🌈🦄\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/CodelyTV\"\u003e\u003cimg src=\"https://img.shields.io/badge/CodelyTV-OS-green.svg?style=flat-square\" alt=\"CodelyTV Open Source\"/\u003e\u003c/a\u003e\n    \u003ca href=\"http://codely.tv/pro/cursos\"\u003e\u003cimg src=\"https://img.shields.io/badge/CodelyTV-PRO-black.svg?style=flat-square\" alt=\"CodelyTV Pro Courses\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Showcase of the refactorings and code smells catalog illustrated with practical examples in different programming languages.\n  \u003cbr /\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"https://pro.codely.tv/library/refactoring-code-smells-clean-code-bloaters/\"\u003e🎥 View refactoring course\u003c/a\u003e\n  ·\n  \u003ca href=\"https://github.com/CodelyTV/refactoring-code-smells/stargazers\"\u003e⭐ Star this repository\u003c/a\u003e\n  ·\n  \u003ca href=\"https://github.com/CodelyTV/refactoring-code-smells/issues\"\u003e☝️ Propose an example\u003c/a\u003e\n\u003c/p\u003e\n\n## 🧠 Concepts \n\n### 💩 Code Smells\n\nThese are what we could consider as potential bad practices. Things such as long methods, nested conditionals, feature envy, and so on 😊\n\nThe different Code Smells are grouped based on the following taxonomy ([source](https://mmantyla.github.io/BadCodeSmellsTaxonomy)) where you will find each one of the single examples:\n\n* Bloaters: Something that has grown so large that it cannot be effectively handled\n* Object-Orientation Abusers: Solutions that does not fully exploit the possibilities of object-oriented design\n* Change Preventers: hinder changing or further developing the software\n* Dispensables: Something unnecessary that should be removed from the source code\n* Couplers: Promotes coupling (knowledge particularities) between different classes\n\n### 🧼 Refactorings\n\n👷‍ Work in progress\n\n### 🌈 Examples\n\n👷‍ Work in progress\n\n## 🤯 How to explore this repository\n\nYou have the following 3 main folders:\n\n* 💩 Code Smells\n* 🧼 Refactorings\n* 🌈 Examples\n\nThe purpose of this repository is to illustrate with some _🌈 Examples_ how we can detect _💩 Code Smells_ and evolve a specific code applying _🧼 Refactorings_ technics.\n\nThat is the reason why the code will always be located in the _🌈 Examples_ folder with a folder for each of its possible evolutions, and linked from the _💩 Code Smells_ and _🧼 Refactorings_ directories using symbolic links.\n\n## 👌 Examples completeness\n\nThe examples you will find in this repository are completely operational projects that you can open up in your IDE and start refactoring executing the provided test suite.\n\nThat is, we understand that in order to have a better learning experience, you must have the whole picture of the specific code snippet you actually want to analyze. This gives you the freedom to modify it right away after cloning this project without having to worry about _boilerplaty aspects_.\n\n## 🤝 Contributing\n\nFeel free to open an issue explaining how you want to contribute before starting out coding and we will help you figuring out the best way to approach it 😊\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodelytv%2Frefactoring-code_smells-design_patterns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodelytv%2Frefactoring-code_smells-design_patterns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodelytv%2Frefactoring-code_smells-design_patterns/lists"}