Step-by-step refactoring techniques including Extract Function, Replace Conditional with Polymorphism, Decompose Module, and more