Skip to content

Latest commit

 

History

History
79 lines (74 loc) · 2.03 KB

refactorings-catalog.md

File metadata and controls

79 lines (74 loc) · 2.03 KB

Composing Methods

  • Extract Method
  • Inline Method
  • Inline Temp
  • Replace Temp with Query
  • Introduce Explaining Variable
  • Split Temporary Variable
  • Remove Assignments to Parameters
  • Replace Method with Method Object
  • Substitute Algorithm

Moving Features Between Objects

  • Move Method
  • Move Field
  • Extract Class
  • Inline Class
  • Hide Delegate
  • Remove Middle Man
  • Introduce Foreign Method
  • Introduce Local Extension

Organizing Data

  • Replace Magic Number with Symbolic Constant
  • Encapsulate Field
  • Self Encapsulate Field
  • Encapsulate Collection
  • Replace Record with Data Class
  • Replace Data Value with Object
  • Replace Array with Object
  • Change Value to Reference
  • Change Reference to Value
  • Duplicate Observed Data
  • Change Unidirectional Association to Bidirectional
  • Change Bidirectional Association to Unidirectional
  • Replace Type Code with Class
  • Replace Type Code with Subclasses
  • Replace Type Code with State/Strategy
  • Replace Subclass with Fields

Simplifying Conditional Expressions

  • Decompose Conditional
  • Consolidate Conditional Expression
  • Consolidate Duplicate Conditional Fragments
  • Remove Control Flag
  • Replace Nested Conditional with Guard Clauses
  • Replace Conditional with Polymorphism
  • Introduce Null Object
  • Introduce Assertion

Making Method Calls Simpler

  • Rename Method
  • Add Parameter
  • Remove Parameter
  • Separate Query from Modifier
  • Parameterize Method
  • Replace Parameter with Explicit Methods
  • Preserve Whole Object
  • Replace Parameter with Method
  • Introduce Parameter Object
  • Remove Setting Method
  • Hide Method
  • Replace Constructor with Factory Method
  • Encapsulate Downcast
  • Replace Error Code with Exception
  • Replace Exception with Test

Dealing with Generalization

  • Pull Up Field
  • Pull Up Method
  • Pull Up Constructor Body
  • Push Down Method
  • Push Down Field
  • Extract Subclass
  • Extract Superclass
  • Extract Interface
  • Collapse Hierarchy
  • Form Template Method
  • Replace Inheritance with Delegation
  • Replace Delegation with Inheritance