Refactoring 002 — Extract Method

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

Maximiliano Contieri
Dev Genius

--

Image by Hreisho from Pixabay

TL;DR: Group your cohesive sentences together

Problems Addressed

  • Readability
  • Complexity
  • Code Reuse

Related Code Smells

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

Limitations

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

Tags

  • Complexity
  • Readability

Related Refactorings

  • Move method to a new class

This article is part of the Refactoring Series.

--

--

I’m a senior software engineer specialized in declarative designs. S.O.L.I.D. and agile methodologies fan. Maximilianocontieri.com