Refactoring 002 — Extract Method
Find some code snippets that can be grouped and called atomically.
Published in
2 min readNov 25, 2021
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.