CSC/ECE 517 Fall 2009/wiki1a 8 nd

From Expertiza_Wiki
Jump to navigation Jump to search

Categorization of Refactorings

Problem Statement : The list of refactorings has become quite long. But people don't remember long lists very well. To promote learning the different patterns, they should be categorized in some way, or perhaps, along various dimensions. As a reference we have taken the list of refactorings available at [1] and categorized them along as many different dimensions as makes sense.

  • Package
    • Extract Package
    • Move Class


  • Class
    • Changing Class Association
      • Change Unidirectional Assn to Bidirectional
      • Change Unidirectional Assn to Bidirectional
    • Change of class structure
      • Collapse Hierarchy
      • Duplicate Observed Data
      • Extract Class
      • Extract SubClass
      • Extract SuperClass
      • Inline Class
      • Replace Subclass with Fields
      • Separate Data Access Code
    • Addition to a class
      • Pull up constructor body
      • Pull up Field
      • Pull up Method
      • Push down Field
      • Push down Method

  • Method
    • Meaningful and Detailed Method Calls
      • Add Parameter
      • Rename method
      • Preserve Whole Object
    • Change of Structure of the Method Code
      • Extract Method
      • Inline Method
      • Consolidate Conditional Expression
      • Encapsulation Collection
      • Form Template Method
      • Replace Nested Conditional with Guard Clauses
      • Replace Parameter with Method
    • Change Method Call Heirarchy
      • Remove Middle man
      • Replace Delegation with Inheritance
      • Replace Inheritance with Delegation
    • Improve Method Redability
      • Introduce Explaining Variable
      • Replace magic No with symbolic Constant
      • Split Temporary Variable
    • Method Code Refactoring based on Method Arguments
      • Replace Conditional with Polymorphism
      • Replace Conditional with Visitor
      • Replace parameter with explicit methods

  • Object
    • Replacements with Objects
      • Introduce Null Object
      • Replace Array with Object
      • Introduce Parameter Object
      • Replace Data Value with Object
      • Replace Method with Method Object
    • Object Initialization
      • Replace constructor with factory method
    • Accessing the Object/Data
      • Change Reference to Value
      • Change Value to Reference
      • Refactor Architecture by tiers
      • Self Encapsulate Field