- Long Method
 - Large Class
 - Feature Envy
 - Case/Switch Statement
 - High Fan-out
 - Shotgun Surgery
 - Divergent Change
 - Long Parameter List
 - Duplicated Code
 - Uncommunicative Name
 - Single Table Inheritance (STI)
 - Parallel Inheritance Hierarchies
 - Comments
 - Mixin
 - Callback
 
- Replace Conditional with Polymorphism
 - Replace conditional with Null Object
 - Extract method
 - Rename Method
 - Extract Class
 - Extract Value Object
 - Extract Decorator
 - Extract Partial
 - Extract Validator
 - Introduce Explaining Variable
 - Introduce Observer
 - Introduce Form Object
 - Introduce Parameter Object
 - Use class as Factory
 - Move method
 - Inline class
 - Inject dependencies
 - Replace Subclasses with Strategies
 - Replace mixin with composition
 - Replace Callback with Method
 - Use convention over configuration
 - Introduce Visitor
 
- DRY
 - Single responsibility principle
 - Tell, Don’t Ask
 - Law of Demeter
 - Composition over inheritance
 - Open/closed principle
 - Dependency inversion principle