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
Steps
Move the code fragment to a separate new method
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
Credits
This article is part of the Refactoring Series.