├── 01 Encapsullate Collection ├── problem │ └── Order.js ├── solution │ └── Order.js └── solutions_using_prototype │ ├── solution1 │ └── Order.js │ └── solution2 │ └── Order.js ├── 02 Move Method ├── problem │ ├── AccountInterest.js │ └── BankAccount.js ├── solution.js └── solution │ ├── AccountInterest.js │ └── BankAccount.js ├── 03 Pull Up Method ├── problem │ ├── Car.js │ ├── Direction.js │ ├── Motorcycle.js │ └── Vehicle.js └── solution │ ├── Car.js │ ├── Direction.js │ ├── Motorcycle.js │ └── Vehicle.js ├── 04 Push Down Method ├── problem │ ├── Animal.js │ ├── Cat.js │ └── Dog.js └── solution │ ├── Animal.js │ ├── Cat.js │ └── Dog.js ├── 05 Pull Up Field ├── problem │ ├── Account.js │ ├── CheckingAccount.js │ └── SavingsAccount.js └── solution │ ├── Account.js │ ├── CheckingAccount.js │ └── SavingsAccount.js ├── 06 Push Down Field ├── problem │ ├── BugTask.js │ ├── FeatureTask.js │ └── Task.js └── solution │ ├── BugTask.js │ ├── FeatureTask.js │ └── Task.js ├── 07 Rename (method, class, parameter) ├── problem │ └── Person.js └── solution │ └── Employee.js ├── 08 Replace Inheritance with Delegation ├── problem │ ├── Child.js │ └── Sanitation.js └── solution │ ├── Child.js │ └── Sanitation.js ├── 09 Extract Interface ├── problem │ ├── ClassRegistration.js │ └── RegistrationProcessor.js └── solution │ ├── ClassRegistration.js │ ├── InterfaceRegistration.js │ └── RegistrationProcessor.js ├── 10 Extract Method ├── problem │ └── Receipt.js └── solution │ └── Receipt.js ├── 11 Switch to Strategy ├── problem │ └── switch.js └── solution │ ├── switch.js │ └── switch2.js ├── 12 Break Dependencies ├── problem │ ├── AnimalFeedingService.js │ └── Feeder.js └── solution │ ├── AnimalFeedingService.js │ ├── Feeder.js │ ├── FeederService.js │ └── InterfaceFeederService.js ├── 13 Extract Method Object ├── problem │ ├── Order.js │ └── OrderLineItem.js └── solution │ ├── Order.js │ ├── OrderCalculator.js │ └── OrderLineItem.js ├── 14 Break Responsibilities ├── problem │ ├── Customer.js │ └── Video.js └── solution │ ├── Customer.js │ └── Video.js ├── 15 Remove Duplication ├── problem │ └── MedicalRecord.js └── solution │ └── MedicalRecord.js ├── 16 Encapsulate Conditional ├── problem │ └── RemoteControl.js └── solution │ └── RemoteControl.js ├── 17 Extract Superclass ├── problem │ └── Dog.js └── solution │ ├── Animal.js │ └── Dog.js ├── 18 Replace exception with conditional ├── problem │ ├── Microwave.js │ └── MicrowaveMotor.js └── solution │ ├── Microwave.js │ └── MicrowaveMotor.js ├── 19 Extract Factory Class ├── problem │ └── PoliceCarController.js └── solution │ ├── InterfacePoliceCarFactory.js │ ├── PoliceCarController.js │ └── PoliceCarFactory.js ├── 20 Extract SubClass ├── problem │ └── Registration.js └── solution │ ├── NonRegistration.js │ └── Registration.js ├── 21 Collapse Hierarchy ├── problem │ ├── StudentWebsite.js │ └── Website.js └── solution │ └── Website.js ├── 22 Break Method ├── problem │ ├── CashRegister.js │ ├── Customer.js │ └── Product.js └── solution │ ├── CashRegister.js │ ├── Customer.js │ └── Product.js ├── 23 Introduce Parameter Object ├── problem │ └── Registration.js └── solution │ ├── Registration.js │ └── RegistrationContext.js ├── 24 Remove Arrowhead Antipattern ├── problem │ └── Security.js └── solution │ └── Security.js ├── 25 Introduce Design By Contract checks ├── problem │ └── CashRegister.js └── solution │ └── CashRegister.js ├── 26 Remove Double Negative ├── problem │ ├── Customer.js │ └── Order.js └── solution │ ├── Customer.js │ └── Order.js ├── 27 Remove God Classes ├── problem │ └── CustomerService.js └── solution │ ├── CustomerOrderService.js │ └── CustomerRegistrationService.js ├── 28 Rename boolean method ├── problem │ └── BankAccount.js └── solution │ └── BankAccount.js ├── 29 Remove Middle Man ├── problem │ ├── AccountDataProvider.js │ ├── AccountManager.js │ └── Consumer.js └── solution │ ├── AccountDataProvider.js │ └── Consumer.js ├── 30 Return ASAP ├── problem │ └── Order.js └── solution │ └── Order.js ├── 31 Replace conditional with Polymorphism ├── problem │ ├── Customer.js │ ├── Employee.js │ ├── NonEmployee.js │ └── OrderProcessor.js └── solution │ ├── Customer.js │ ├── Employee.js │ ├── NonEmployee.js │ └── OrderProcessor.js ├── Array_Sum.js └── README.md /01 Encapsullate Collection/problem/Order.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/01 Encapsullate Collection/problem/Order.js -------------------------------------------------------------------------------- /01 Encapsullate Collection/solution/Order.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/01 Encapsullate Collection/solution/Order.js -------------------------------------------------------------------------------- /01 Encapsullate Collection/solutions_using_prototype/solution1/Order.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/01 Encapsullate Collection/solutions_using_prototype/solution1/Order.js -------------------------------------------------------------------------------- /01 Encapsullate Collection/solutions_using_prototype/solution2/Order.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/01 Encapsullate Collection/solutions_using_prototype/solution2/Order.js -------------------------------------------------------------------------------- /02 Move Method/problem/AccountInterest.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/02 Move Method/problem/AccountInterest.js -------------------------------------------------------------------------------- /02 Move Method/problem/BankAccount.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/02 Move Method/problem/BankAccount.js -------------------------------------------------------------------------------- /02 Move Method/solution.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02 Move Method/solution/AccountInterest.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/02 Move Method/solution/AccountInterest.js -------------------------------------------------------------------------------- /02 Move Method/solution/BankAccount.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/02 Move Method/solution/BankAccount.js -------------------------------------------------------------------------------- /03 Pull Up Method/problem/Car.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/03 Pull Up Method/problem/Car.js -------------------------------------------------------------------------------- /03 Pull Up Method/problem/Direction.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/03 Pull Up Method/problem/Direction.js -------------------------------------------------------------------------------- /03 Pull Up Method/problem/Motorcycle.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/03 Pull Up Method/problem/Motorcycle.js -------------------------------------------------------------------------------- /03 Pull Up Method/problem/Vehicle.js: -------------------------------------------------------------------------------- 1 | function Vehicle() { 2 | // Other methods 3 | } -------------------------------------------------------------------------------- /03 Pull Up Method/solution/Car.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/03 Pull Up Method/solution/Car.js -------------------------------------------------------------------------------- /03 Pull Up Method/solution/Direction.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/03 Pull Up Method/solution/Direction.js -------------------------------------------------------------------------------- /03 Pull Up Method/solution/Motorcycle.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/03 Pull Up Method/solution/Motorcycle.js -------------------------------------------------------------------------------- /03 Pull Up Method/solution/Vehicle.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/03 Pull Up Method/solution/Vehicle.js -------------------------------------------------------------------------------- /04 Push Down Method/problem/Animal.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/04 Push Down Method/problem/Animal.js -------------------------------------------------------------------------------- /04 Push Down Method/problem/Cat.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/04 Push Down Method/problem/Cat.js -------------------------------------------------------------------------------- /04 Push Down Method/problem/Dog.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/04 Push Down Method/problem/Dog.js -------------------------------------------------------------------------------- /04 Push Down Method/solution/Animal.js: -------------------------------------------------------------------------------- 1 | function Animal() { 2 | 3 | } -------------------------------------------------------------------------------- /04 Push Down Method/solution/Cat.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/04 Push Down Method/solution/Cat.js -------------------------------------------------------------------------------- /04 Push Down Method/solution/Dog.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/04 Push Down Method/solution/Dog.js -------------------------------------------------------------------------------- /05 Pull Up Field/problem/Account.js: -------------------------------------------------------------------------------- 1 | function Account() { 2 | 3 | } -------------------------------------------------------------------------------- /05 Pull Up Field/problem/CheckingAccount.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/05 Pull Up Field/problem/CheckingAccount.js -------------------------------------------------------------------------------- /05 Pull Up Field/problem/SavingsAccount.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/05 Pull Up Field/problem/SavingsAccount.js -------------------------------------------------------------------------------- /05 Pull Up Field/solution/Account.js: -------------------------------------------------------------------------------- 1 | function Account() { 2 | this.nMinimumBalance = 5; 3 | } -------------------------------------------------------------------------------- /05 Pull Up Field/solution/CheckingAccount.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/05 Pull Up Field/solution/CheckingAccount.js -------------------------------------------------------------------------------- /05 Pull Up Field/solution/SavingsAccount.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/05 Pull Up Field/solution/SavingsAccount.js -------------------------------------------------------------------------------- /06 Push Down Field/problem/BugTask.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/06 Push Down Field/problem/BugTask.js -------------------------------------------------------------------------------- /06 Push Down Field/problem/FeatureTask.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/06 Push Down Field/problem/FeatureTask.js -------------------------------------------------------------------------------- /06 Push Down Field/problem/Task.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/06 Push Down Field/problem/Task.js -------------------------------------------------------------------------------- /06 Push Down Field/solution/BugTask.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/06 Push Down Field/solution/BugTask.js -------------------------------------------------------------------------------- /06 Push Down Field/solution/FeatureTask.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/06 Push Down Field/solution/FeatureTask.js -------------------------------------------------------------------------------- /06 Push Down Field/solution/Task.js: -------------------------------------------------------------------------------- 1 | function Task() { 2 | 3 | } -------------------------------------------------------------------------------- /07 Rename (method, class, parameter)/problem/Person.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/07 Rename (method, class, parameter)/problem/Person.js -------------------------------------------------------------------------------- /07 Rename (method, class, parameter)/solution/Employee.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/07 Rename (method, class, parameter)/solution/Employee.js -------------------------------------------------------------------------------- /08 Replace Inheritance with Delegation/problem/Child.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/08 Replace Inheritance with Delegation/problem/Child.js -------------------------------------------------------------------------------- /08 Replace Inheritance with Delegation/problem/Sanitation.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/08 Replace Inheritance with Delegation/problem/Sanitation.js -------------------------------------------------------------------------------- /08 Replace Inheritance with Delegation/solution/Child.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/08 Replace Inheritance with Delegation/solution/Child.js -------------------------------------------------------------------------------- /08 Replace Inheritance with Delegation/solution/Sanitation.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/08 Replace Inheritance with Delegation/solution/Sanitation.js -------------------------------------------------------------------------------- /09 Extract Interface/problem/ClassRegistration.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/09 Extract Interface/problem/ClassRegistration.js -------------------------------------------------------------------------------- /09 Extract Interface/problem/RegistrationProcessor.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/09 Extract Interface/problem/RegistrationProcessor.js -------------------------------------------------------------------------------- /09 Extract Interface/solution/ClassRegistration.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/09 Extract Interface/solution/ClassRegistration.js -------------------------------------------------------------------------------- /09 Extract Interface/solution/InterfaceRegistration.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/09 Extract Interface/solution/InterfaceRegistration.js -------------------------------------------------------------------------------- /09 Extract Interface/solution/RegistrationProcessor.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/09 Extract Interface/solution/RegistrationProcessor.js -------------------------------------------------------------------------------- /10 Extract Method/problem/Receipt.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/10 Extract Method/problem/Receipt.js -------------------------------------------------------------------------------- /10 Extract Method/solution/Receipt.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/10 Extract Method/solution/Receipt.js -------------------------------------------------------------------------------- /11 Switch to Strategy/problem/switch.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/11 Switch to Strategy/problem/switch.js -------------------------------------------------------------------------------- /11 Switch to Strategy/solution/switch.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/11 Switch to Strategy/solution/switch.js -------------------------------------------------------------------------------- /11 Switch to Strategy/solution/switch2.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/11 Switch to Strategy/solution/switch2.js -------------------------------------------------------------------------------- /12 Break Dependencies/problem/AnimalFeedingService.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/12 Break Dependencies/problem/AnimalFeedingService.js -------------------------------------------------------------------------------- /12 Break Dependencies/problem/Feeder.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/12 Break Dependencies/problem/Feeder.js -------------------------------------------------------------------------------- /12 Break Dependencies/solution/AnimalFeedingService.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/12 Break Dependencies/solution/AnimalFeedingService.js -------------------------------------------------------------------------------- /12 Break Dependencies/solution/Feeder.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/12 Break Dependencies/solution/Feeder.js -------------------------------------------------------------------------------- /12 Break Dependencies/solution/FeederService.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/12 Break Dependencies/solution/FeederService.js -------------------------------------------------------------------------------- /12 Break Dependencies/solution/InterfaceFeederService.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/12 Break Dependencies/solution/InterfaceFeederService.js -------------------------------------------------------------------------------- /13 Extract Method Object/problem/Order.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/13 Extract Method Object/problem/Order.js -------------------------------------------------------------------------------- /13 Extract Method Object/problem/OrderLineItem.js: -------------------------------------------------------------------------------- 1 | function OrderLineItem() { 2 | this.nPrice = 0; 3 | } -------------------------------------------------------------------------------- /13 Extract Method Object/solution/Order.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/13 Extract Method Object/solution/Order.js -------------------------------------------------------------------------------- /13 Extract Method Object/solution/OrderCalculator.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/13 Extract Method Object/solution/OrderCalculator.js -------------------------------------------------------------------------------- /13 Extract Method Object/solution/OrderLineItem.js: -------------------------------------------------------------------------------- 1 | function OrderLineItem() { 2 | this.nPrice = 0; 3 | } -------------------------------------------------------------------------------- /14 Break Responsibilities/problem/Customer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/14 Break Responsibilities/problem/Customer.js -------------------------------------------------------------------------------- /14 Break Responsibilities/problem/Video.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/14 Break Responsibilities/problem/Video.js -------------------------------------------------------------------------------- /14 Break Responsibilities/solution/Customer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/14 Break Responsibilities/solution/Customer.js -------------------------------------------------------------------------------- /14 Break Responsibilities/solution/Video.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/14 Break Responsibilities/solution/Video.js -------------------------------------------------------------------------------- /15 Remove Duplication/problem/MedicalRecord.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/15 Remove Duplication/problem/MedicalRecord.js -------------------------------------------------------------------------------- /15 Remove Duplication/solution/MedicalRecord.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/15 Remove Duplication/solution/MedicalRecord.js -------------------------------------------------------------------------------- /16 Encapsulate Conditional/problem/RemoteControl.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/16 Encapsulate Conditional/problem/RemoteControl.js -------------------------------------------------------------------------------- /16 Encapsulate Conditional/solution/RemoteControl.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/16 Encapsulate Conditional/solution/RemoteControl.js -------------------------------------------------------------------------------- /17 Extract Superclass/problem/Dog.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/17 Extract Superclass/problem/Dog.js -------------------------------------------------------------------------------- /17 Extract Superclass/solution/Animal.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/17 Extract Superclass/solution/Animal.js -------------------------------------------------------------------------------- /17 Extract Superclass/solution/Dog.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/17 Extract Superclass/solution/Dog.js -------------------------------------------------------------------------------- /18 Replace exception with conditional/problem/Microwave.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/18 Replace exception with conditional/problem/Microwave.js -------------------------------------------------------------------------------- /18 Replace exception with conditional/problem/MicrowaveMotor.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/18 Replace exception with conditional/problem/MicrowaveMotor.js -------------------------------------------------------------------------------- /18 Replace exception with conditional/solution/Microwave.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/18 Replace exception with conditional/solution/Microwave.js -------------------------------------------------------------------------------- /18 Replace exception with conditional/solution/MicrowaveMotor.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/18 Replace exception with conditional/solution/MicrowaveMotor.js -------------------------------------------------------------------------------- /19 Extract Factory Class/problem/PoliceCarController.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/19 Extract Factory Class/problem/PoliceCarController.js -------------------------------------------------------------------------------- /19 Extract Factory Class/solution/InterfacePoliceCarFactory.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/19 Extract Factory Class/solution/InterfacePoliceCarFactory.js -------------------------------------------------------------------------------- /19 Extract Factory Class/solution/PoliceCarController.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/19 Extract Factory Class/solution/PoliceCarController.js -------------------------------------------------------------------------------- /19 Extract Factory Class/solution/PoliceCarFactory.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/19 Extract Factory Class/solution/PoliceCarFactory.js -------------------------------------------------------------------------------- /20 Extract SubClass/problem/Registration.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/20 Extract SubClass/problem/Registration.js -------------------------------------------------------------------------------- /20 Extract SubClass/solution/NonRegistration.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/20 Extract SubClass/solution/NonRegistration.js -------------------------------------------------------------------------------- /20 Extract SubClass/solution/Registration.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/20 Extract SubClass/solution/Registration.js -------------------------------------------------------------------------------- /21 Collapse Hierarchy/problem/StudentWebsite.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/21 Collapse Hierarchy/problem/StudentWebsite.js -------------------------------------------------------------------------------- /21 Collapse Hierarchy/problem/Website.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/21 Collapse Hierarchy/problem/Website.js -------------------------------------------------------------------------------- /21 Collapse Hierarchy/solution/Website.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/21 Collapse Hierarchy/solution/Website.js -------------------------------------------------------------------------------- /22 Break Method/problem/CashRegister.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/22 Break Method/problem/CashRegister.js -------------------------------------------------------------------------------- /22 Break Method/problem/Customer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/22 Break Method/problem/Customer.js -------------------------------------------------------------------------------- /22 Break Method/problem/Product.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/22 Break Method/problem/Product.js -------------------------------------------------------------------------------- /22 Break Method/solution/CashRegister.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/22 Break Method/solution/CashRegister.js -------------------------------------------------------------------------------- /22 Break Method/solution/Customer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/22 Break Method/solution/Customer.js -------------------------------------------------------------------------------- /22 Break Method/solution/Product.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/22 Break Method/solution/Product.js -------------------------------------------------------------------------------- /23 Introduce Parameter Object/problem/Registration.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/23 Introduce Parameter Object/problem/Registration.js -------------------------------------------------------------------------------- /23 Introduce Parameter Object/solution/Registration.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/23 Introduce Parameter Object/solution/Registration.js -------------------------------------------------------------------------------- /23 Introduce Parameter Object/solution/RegistrationContext.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/23 Introduce Parameter Object/solution/RegistrationContext.js -------------------------------------------------------------------------------- /24 Remove Arrowhead Antipattern/problem/Security.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/24 Remove Arrowhead Antipattern/problem/Security.js -------------------------------------------------------------------------------- /24 Remove Arrowhead Antipattern/solution/Security.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/24 Remove Arrowhead Antipattern/solution/Security.js -------------------------------------------------------------------------------- /25 Introduce Design By Contract checks/problem/CashRegister.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/25 Introduce Design By Contract checks/problem/CashRegister.js -------------------------------------------------------------------------------- /25 Introduce Design By Contract checks/solution/CashRegister.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/25 Introduce Design By Contract checks/solution/CashRegister.js -------------------------------------------------------------------------------- /26 Remove Double Negative/problem/Customer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/26 Remove Double Negative/problem/Customer.js -------------------------------------------------------------------------------- /26 Remove Double Negative/problem/Order.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/26 Remove Double Negative/problem/Order.js -------------------------------------------------------------------------------- /26 Remove Double Negative/solution/Customer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/26 Remove Double Negative/solution/Customer.js -------------------------------------------------------------------------------- /26 Remove Double Negative/solution/Order.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/26 Remove Double Negative/solution/Order.js -------------------------------------------------------------------------------- /27 Remove God Classes/problem/CustomerService.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/27 Remove God Classes/problem/CustomerService.js -------------------------------------------------------------------------------- /27 Remove God Classes/solution/CustomerOrderService.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/27 Remove God Classes/solution/CustomerOrderService.js -------------------------------------------------------------------------------- /27 Remove God Classes/solution/CustomerRegistrationService.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/27 Remove God Classes/solution/CustomerRegistrationService.js -------------------------------------------------------------------------------- /28 Rename boolean method/problem/BankAccount.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/28 Rename boolean method/problem/BankAccount.js -------------------------------------------------------------------------------- /28 Rename boolean method/solution/BankAccount.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/28 Rename boolean method/solution/BankAccount.js -------------------------------------------------------------------------------- /29 Remove Middle Man/problem/AccountDataProvider.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/29 Remove Middle Man/problem/AccountDataProvider.js -------------------------------------------------------------------------------- /29 Remove Middle Man/problem/AccountManager.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/29 Remove Middle Man/problem/AccountManager.js -------------------------------------------------------------------------------- /29 Remove Middle Man/problem/Consumer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/29 Remove Middle Man/problem/Consumer.js -------------------------------------------------------------------------------- /29 Remove Middle Man/solution/AccountDataProvider.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/29 Remove Middle Man/solution/AccountDataProvider.js -------------------------------------------------------------------------------- /29 Remove Middle Man/solution/Consumer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/29 Remove Middle Man/solution/Consumer.js -------------------------------------------------------------------------------- /30 Return ASAP/problem/Order.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/30 Return ASAP/problem/Order.js -------------------------------------------------------------------------------- /30 Return ASAP/solution/Order.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/30 Return ASAP/solution/Order.js -------------------------------------------------------------------------------- /31 Replace conditional with Polymorphism/problem/Customer.js: -------------------------------------------------------------------------------- 1 | function Customer() { 2 | 3 | } -------------------------------------------------------------------------------- /31 Replace conditional with Polymorphism/problem/Employee.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/31 Replace conditional with Polymorphism/problem/Employee.js -------------------------------------------------------------------------------- /31 Replace conditional with Polymorphism/problem/NonEmployee.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/31 Replace conditional with Polymorphism/problem/NonEmployee.js -------------------------------------------------------------------------------- /31 Replace conditional with Polymorphism/problem/OrderProcessor.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/31 Replace conditional with Polymorphism/problem/OrderProcessor.js -------------------------------------------------------------------------------- /31 Replace conditional with Polymorphism/solution/Customer.js: -------------------------------------------------------------------------------- 1 | function Customer() { 2 | this.nDiscountPercentage = 0; 3 | } -------------------------------------------------------------------------------- /31 Replace conditional with Polymorphism/solution/Employee.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/31 Replace conditional with Polymorphism/solution/Employee.js -------------------------------------------------------------------------------- /31 Replace conditional with Polymorphism/solution/NonEmployee.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/31 Replace conditional with Polymorphism/solution/NonEmployee.js -------------------------------------------------------------------------------- /31 Replace conditional with Polymorphism/solution/OrderProcessor.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/31 Replace conditional with Polymorphism/solution/OrderProcessor.js -------------------------------------------------------------------------------- /Array_Sum.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/Array_Sum.js -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tcorral/Refactoring_Patterns/HEAD/README.md --------------------------------------------------------------------------------