Skip to content

Latest commit

 

History

History
136 lines (86 loc) · 3.71 KB

File metadata and controls

136 lines (86 loc) · 3.71 KB

Refactoring 002 - Extract Method

Refactoring 002 - Extract Method

Find some code snippets that can be grouped and called atomically.

TL;DR: Group your cohesive sentences together

Problems Addressed

  • Readability

  • Complexity

  • Code Reuse

Related Code Smells

Code Smell 03 - Functions Are Too Long

Code Smell 05 - Comment Abusers

Code Smell 18 - Static Functions

Code Smell 22 - Helpers

Code Smell 74 - Empty Lines

Code Smell 78 - Callback Hell

Code Smell 102 - Arrow Code

Steps

  1. Move the code fragment to a separate new method

  2. Replace the old code with a call to the recently created method.

Sample Code

Before

object Ingenuity {
    fun moveFollowingPerseverance() {
        // take Off
        raiseTo(10 feet)
      
        // move forward to perseverance
        while (distanceToPerseverance() < 5 feet) {
             moveForward()             
         }
        
        // land
        raiseTo(0 feet)
    }

After

object Ingenuity {   
    //1. Move the code fragment to a separate new method 
    private fun takeOff() {
        raiseTo(10 feet)
    }
    
    //1. Move the code fragment to a separate new method 
    private fun moveForwardToPerseverance() {
       while (distanceToPerseverance() < 5 feet) {
             moveForward()             
         }
    }
    
    //1. Move the code fragment to a separate new method 
    private fun land() {
        raiseTo(0 feet)
    }
    
    fun moveFollowingPerseverance() {
        takeOff()
        // 2. Replace the old code with a call
        // to the recently created method
        moveForwardToPerseverance()
        // 2. Replace the old code with a call 
        // to the recently created method
        land()
        // 2. Replace the old code with a call
        // to the recently created method
    }
}

Type

[X] Automatic

Many IDEs support this safe refactoring

Safety

This is a safe refactoring.

Why is the Code Better?

Code is more compact and easier to read.

Functions can be reused.

Algorithms and functions are more declarative hiding implementative details on extracted code.

Limitations

Does not work well if you use meta-programming anti-pattern.

Tags

  • Complexity

  • Readability

Related Refactorings

  • Move method to a new class

Credits

Image by Hreisho on Pixabay


This article is part of the Refactoring Series.